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, יש אותו עכשיו בצד שמאל.
challenge icon

שאלת המשך

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

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

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

הפלט הצפוי

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