Menu
CoddyTech

Diameter of Binary Tree

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

פונקציה

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

אילוצים

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

דוגמאות

קלט
tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]
פלט
4
הסבר
המסלול 7, 4, 3, 8, 6 (אינדקסים 9, 4, 1, 0, 2) מכיל חמישה צמתים המחוברים באמצעות ארבע קשתות. הוא פונה בשורש: שלוש קשתות יורדות בצד שמאל ואחת יורדת בצד ימין.
challenge icon

שאלת המשך

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

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]

הפלט הצפוי

4