Menu
CoddyTech

Symmetric Tree

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

פונקציה

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

אילוצים

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

דוגמאות

קלט
tree = [1, 2, 2, 3, 4, 4, 3]
פלט
true
הסבר
קפלו את העץ לשניים. שני ערכי ה־2 באינדקסים 1 ו־2 נפגשים, ערכי ה־3 החיצוניים באינדקסים 3 ו־6 נפגשים, וערכי ה־4 הפנימיים באינדקסים 4 ו־5 נפגשים.

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

challenge icon

שאלת המשך

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

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

מקרה 1

מקרה 2

מקרה 3

קלט

tree = [1, 2, 2, 3, 4, 4, 3]

צפוי

true