Menu
CoddyTech

Left View of Binary Tree

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

עמדו משמאל לעץ. בכל רמה אתם רואים צומת אחד, השמאלי ביותר; שאר הצמתים ברמה מוסתרים מאחוריו. החזירו את הערכים שאתם רואים, מהרמה העליונה ומטה.

פונקציה

leftView(root: integer-array) → integer-array
rootinteger-array
העץ בסדר ערימה, עם ‎-1‎ עבור מקום ריק
מחזירהinteger-array
הערך השמאלי ביותר בכל רמה, החל מהרמה העליונה

אילוצים

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

דוגמאות

קלט
root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]
פלט
[3, 8, 6, 1]
הסבר
8 הוא עלה, לכן הרמה השלישית והרמה הרביעית מכילות רק את 6 (אינדקס 6) ואת 1 (אינדקס 13), שניהם מתחת לילד הימני 5. בכל זאת רואים אותם: [3, 8, 6, 1].
challenge icon

שאלת המשך

רמה d ממלאת את האינדקסים 2^d-1 עד 2^(d+1)-2. האם אפשר לבנות את התצוגה על ידי סריקת הטווחים האלה, בלי תור או רקורסיה? מה העלות של זה במערך מרופד?

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]

הפלט הצפוי

[3, 8, 6, 1]