Menu
CoddyTech

Invert Binary Tree

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

הפוך את העץ: החלף בין הילד השמאלי לילד הימני של כל צומת, כך שהעץ כולו יהפוך לתמונת מראה של עצמו. החזר את העץ ההפוך באותה צורה, ללא ערכי -1 בסוף.

פונקציה

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

אילוצים

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

דוגמאות

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

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

challenge icon

שאלת המשך

איך תבדוק אם עץ הוא תמונת המראה של עצמו, באמצעות אותם זוגות אינדקסים אך בלי לבנות עותק הפוך?

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

מקרה 1

מקרה 2

מקרה 3

קלט

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

צפוי

[5, 8, 3, 9, -1, 4, 1]