המשימה
רמה 0 היא השורש, רמה 1 היא בניו, וכן הלאה. כתוב פעולה **רקורסיבית** שמקבלת שורש של עץ בינארי ומספר רמה k, ומחזירה את סכום הערכים של כל הצמתים ברמה k. עבור העץ שבדוגמה: k=0 → 4 k=1 → 9 (2 + 7) k=2 → 13 (1 + 3 + 9) k=5 → 0 (אין רמה כזו) הנחיות: • הרקורסיה צריכה לדעת באיזו רמה היא נמצאת. אין דרך לדעת זאת מהצומת עצמו, ולכן העומק חייב לעבור כפרמטר. • שני מקרי בסיס: עץ ריק (0), והגענו לרמה המבוקשת (מחזירים את הערך ולא ממשיכים לרדת). • צעד הרקורסיה: יורדים לשני הבנים עם k קטן ב-1, ומחברים. ממשק מבני הנתונים כבר מצורף למשימה. [עץ בינארי] [טבלה]
קוד הפתיחה
using System;
class Program {
static int LevelSum(BinNode<int> root, int k) {
// כתוב את הפתרון כאן — רקורסיבי
return 0;
}
static void Main() {
// 4
// / \
// 2 7
// / \ \
// 1 3 9
BinNode<int> one = new BinNode<int>(1);
BinNode<int> three = new BinNode<int>(3);
BinNode<int> nine = new BinNode<int>(9);
BinNode<int> two = new BinNode<int>(one, 2, three);
BinNode<int> seven = new BinNode<int>(null, 7, nine);
BinNode<int> root = new BinNode<int>(two, 4, seven);
Console.WriteLine(LevelSum(root, 0)); // 4
Console.WriteLine(LevelSum(root, 1)); // 9
Console.WriteLine(LevelSum(root, 2)); // 13
Console.WriteLine(LevelSum(root, 5)); // 0
Console.WriteLine(LevelSum(null, 0)); // 0
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.