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 הוא עלה.

lock icon+14 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

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

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

מקרה 1

מקרה 2

מקרה 3

קלט

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

צפוי

true