Menu
CoddyTech

Path Sum

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

פונקציה

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

אילוצים

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

דוגמאות

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

שאלת המשך

האם תוכל לספור את המסלולים שסכומם targetSum, אם מסלול יכול להתחיל בכל צומת ולהסתיים בכל צומת שנמצא מתחתיו?

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

tree = [3, 9, 6, -1, 2, 1, 7]
targetSum = 14

הפלט הצפוי

true