לפניכם עץ בינארי ששורשו root, המכיל מספרים שלמים. יש לבצע מעקב אחרי הזימונים Something(root) (ולהסביר מה מבצעת הפעולה בכלל) ואחרי Sod(root) עם העץ הנתון.
public static int Something (BinNode<int> root) {
if (root == null)
return 0;
if (root.GetLeft() == null && root.GetRight() == null)
return root.GetValue();
int ans1 = Something(root.GetLeft());
int ans2 = Something(root.GetRight());
if (ans1 > ans2)
return ans1 + root.GetValue();
return ans2 + root.GetValue();
}
העץ הבינארי הנתון (root ומטה)
root=-10; left(-10)=7 [left(7)=6, right(7)=-3 [left(-3)=-5, right(-3)=20]]; right(-10)=10 [right(10)=12]
נתונה הפעולה Something (קוד מלא נתון). (1) מהו הערך שתחזיר הפעולה עבור הזימון Something(root) עם העץ הנתון? יש להציג מעקב על ביצוע הפעולה. (2) הסבירו מה מבצעת הפעולה עבור כל עץ של מספרים שלמים.
public static int Something (BinNode<int> root) { if (root == null) return 0; if (root.GetLeft() == null && root.GetRight() == null) return root.GetValue(); int ans1 = Something(root.GetLeft()); int ans2 = Something(root.GetRight()); if (ans1 > ans2) return ans1 + root.GetValue(); return ans2 + root.GetValue(); }
נתונה הפעולה Sod (קוד מלא נתון), המקבלת עץ בינארי של מספרים שלמים, בתחום הערכים -100 עד 100. מהו הערך שתחזיר הפעולה עבור הזימון Sod(root) עם העץ הנתון לעיל? יש להציג מעקב על ביצוע הפעולה. אין צורך לבצע מעקב אחרי הפעולה Something אלא רק לציין את הערך שחוזר מהפעולה.
public static int Sod (BinNode<int> root) { if (root == null) return -101; int x = Something (root); int left = Sod (root.GetLeft()); int right = Sod (root.GetRight()); return Math.Max (x, Math.Max (left, right)); }
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.