המשימה
רמה 0 היא השורש, רמה 1 היא בניו, וכן הלאה.
כתוב פעולה **רקורסיבית** שמקבלת שורש של עץ בינארי ומספר רמה k,
ומחזירה את סכום הערכים של כל הצמתים ברמה k.
עבור העץ שבדוגמה:
k=0 → 4
k=1 → 9 (2 + 7)
k=2 → 13 (1 + 3 + 9)
k=5 → 0 (אין רמה כזו)
הנחיות:
• הרקורסיה צריכה לדעת באיזו רמה היא נמצאת. אין דרך לדעת זאת מהצומת
עצמו, ולכן העומק חייב לעבור כפרמטר.
• שני מקרי בסיס: עץ ריק (0), והגענו לרמה המבוקשת (מחזירים את הערך
ולא ממשיכים לרדת).
• צעד הרקורסיה: יורדים לשני הבנים עם k קטן ב-1, ומחברים.
ממשק מבני הנתונים כבר מצורף למשימה.
```ds:tree
{"title":"העץ — רמה 2 מכילה את 1, 3 ו-9","nodes":["4","2","7","1","3",null,"9"]}
```
```ds:table
{"title":"סכומי הרמות","rows":[["רמה","צמתים","סכום"],["0","4","4"],["1","2, 7","9"],["2","1, 3, 9","13"],["3","—","0"]]}
```
קוד הפתיחה
public class Main {
public static int levelSum(BinNode<Integer> root, int k) {
// כתוב את הפתרון כאן — רקורסיבי
return 0;
}
public static void main(String[] args) {
// 4
// / \
// 2 7
// / \ \
// 1 3 9
BinNode<Integer> one = new BinNode<Integer>(1);
BinNode<Integer> three = new BinNode<Integer>(3);
BinNode<Integer> nine = new BinNode<Integer>(9);
BinNode<Integer> two = new BinNode<Integer>(one, 2, three);
BinNode<Integer> seven = new BinNode<Integer>(null, 7, nine);
BinNode<Integer> root = new BinNode<Integer>(two, 4, seven);
System.out.println(levelSum(root, 0)); // 4
System.out.println(levelSum(root, 1)); // 9
System.out.println(levelSum(root, 2)); // 13
System.out.println(levelSum(root, 5)); // 0
System.out.println(levelSum(null, 0)); // 0
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.