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]]
הסבר
לשורש 4 יש ילדים 9 ו-2 באינדקסים 1 ו-2. אינדקס 3 ריק, ולכן הרמה השלישית היא 6 (אינדקס 4, מתחת ל-9), ואז 8 ו-5 (אינדקסים 5 ו-6, מתחת ל-2). ה-3 באינדקס 9 הוא הילד השמאלי של 6, לבדו ברמה הרביעית.

lock icon+15 בדיקות נסתרות בשליחה

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]]