Menu
CoddyTech

Binary Tree Level Order Traversal

המערך tree מכיל עץ בינארי. השורש נמצא באינדקס 0, הילדים של הצומת באינדקס i נמצאים באינדקסים 2*i+1 (שמאל) ו־2*i+2 (ימין), -1 מסמן מקום ריק, וייתכן שבסוף יופיעו ערכי -1 נוספים.

החזר את ערכי הצמתים לפי רמות: רשימה אחת לכל רמה, מהשורש ועד לרמה העמוקה ביותר, כשבכל רשימה הערכים מסודרים משמאל לימין.

פונקציה

levelOrder(tree: integer-array) → integer-2d-array
treeinteger-array
העץ בסדר ערימה, עם ‎-1‎ עבור מקום ריק
מחזירהinteger-2d-array
רשימה אחת של ערכים לכל רמה, מהרמה העליונה תחילה, כל אחת משמאל לימין

אילוצים

  • 1 ≤ tree.length ≤ 32767
  • כל tree[i] הוא -1 או ערך שמקיים 0 ≤ tree[i] ≤ 1000.
  • tree[0] לעולם אינו -1, ולכן לעץ יש לפחות צומת אחד.
  • המערך עשוי להסתיים בערכי -1 נוספים אחרי הצומת האחרון.
  • גם שני הצאצאים של מקום ריק ריקים, והעומק הוא לכל היותר 14.

דוגמאות

קלט
tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
פלט
[[4], [9, 2], [6, 8, 5], [3]]
הסבר
האינדקס 3 ריק, לכן ל־9 יש רק ילד ימני, 6. הרמה השלישית כוללת את 6, 8, 5, ואת 3 שבאינדקס 9, מתחת ל־6, שנמצא לבדו ברמה הרביעית.
challenge icon

שאלת המשך

האם תוכל להחזיר את הרמות בסדר זיגזג, הראשונה משמאל לימין, השנייה מימין לשמאל, וכן הלאה, בלי למיין אף רמה?

איפוס הקוד
def levelOrder(tree):
    # כתבו כאן קוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]

הפלט הצפוי

[[4], [9, 2], [6, 8, 5], [3]]