Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

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

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

פונקציה

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

אילוצים

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

דוגמאות

קלט
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
פלט
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
הסבר
אם קוראים משמאל לימין, הרמות הן 8; 12, 5; 1, 9, 14; 4, 2, 11. הרמות 1 ו-3 נקראות בכיוון ההפוך: [5, 12] ו-[11, 2, 4].
challenge icon

שאלת המשך

האם תוכל להציב כל ערך ישירות במקומו הסופי בשורה שלו, בלי להפוך ובלי להשתמש במחסנית שנייה?

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]

הפלט הצפוי

[[8], [5, 12], [1, 9, 14], [11, 2, 4]]