Menu
CoddyTech

Balanced Binary Tree

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

החזר true אם העץ מאוזן בגובה, כלומר בכל צומת ההבדל בין הגבהים של תתי-העץ השמאלי והימני הוא לכל היותר 1, ואחרת החזר false. גובה של תת-עץ הוא מספר הצמתים במסלול הארוך ביותר כלפי מטה; גובה של תת-עץ ריק הוא 0.

פונקציה

isBalanced(root: integer-array) → boolean
rootinteger-array
העץ הבינארי לפי סדר רמות, עם ‎-1‎ עבור מקום ריק
מחזירהboolean
true אם הגבהים של שתי תתי-העץ של כל צומת נבדלים לכל היותר ב־1, ו־false אחרת

אילוצים

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

דוגמאות

קלט
root = [5, 2, 9, -1, -1, 7, 11]
פלט
true
הסבר
תת-העץ השמאלי של השורש הוא הצומת היחיד 2, שגובהו 1. לתת-העץ הימני שלו, 9, 7, 11, יש גובה 2. ההפרש ביניהם הוא 1, ולכל צומת אחר יש שני תתי-עצים שגובהם שווה.
challenge icon

שאלת המשך

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

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

root = [5, 2, 9, -1, -1, 7, 11]

הפלט הצפוי

true