Menu
CoddyTech

Bottom View of Binary Tree

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

השורש נמצא בעמודה 0; צעד שמאלה מזיז עמודה אחת שמאלה, וצעד ימינה מזיז עמודה אחת ימינה. במבט מלמטה, בכל עמודה מופיע הצומת העמוק ביותר שלה, ובמקרה של שוויון — הצומת האחרון באותה רמה כשקוראים משמאל לימין (האינדקס הגדול יותר). החזירו את הערכים שאתם רואים, החל מהעמודה השמאלית ביותר.

פונקציה

bottomView(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 = [5, 2, 9, 4, 7, 1, 6]
פלט
[4, 2, 1, 9, 6]
הסבר
עמודה 0 מכילה את 5 ומתחתיה, שתי רמות למטה, את 7 (אינדקס 4) ואת 1 (אינדקס 5). 1 מופיע מאוחר יותר באותה רמה, ולכן הוא מוצג. העמודות ‎-2, ‎-1, 1 ו-2 מכילות את 4, 2, 9 ו-6.
challenge icon

שאלת המשך

אם במקרה של תיקו ברמה העמוקה ביותר של עמודה צריך להחזיר את כל הצמתים שבמקום הראשון, משמאל לימין, איך ישתנה המימוש בחיפוש לרוחב? מה יתקבל בעמודה 0 של דוגמה 1?

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

root = [5, 2, 9, 4, 7, 1, 6]

הפלט הצפוי

[4, 2, 1, 9, 6]