לפניכם עץ בינארי ששורשו root, ועליו מוגדרות שתי פעולות רקורסיביות: sod/Sod הבודקת אם ערך מסוים מופיע בעץ, ו-secret/Secret המחשבת סכום מבוסס-מבנה מעל אותו עץ (סכום ערכי ה"הורים" של מופעי ערך נתון). יש לבצע מעקב על הזימונים הנתונים ולהסביר מה כל פעולה מבצעת.
לפניכם עץ בינארי ששורשו root, ועליו מוגדרות שתי פעולות רקורסיביות: sod/Sod הבודקת אם ערך מסוים מופיע בעץ, ו-secret/Secret המחשבת סכום מבוסס-מבנה מעל אותו עץ (סכום ערכי ה"הורים" של מופעי ערך נתון). יש לבצע מעקב על הזימונים הנתונים ולהסביר מה כל פעולה מבצעת.
public static bool Sod(BinNode<int> root, int num)
{
if (root == null)
return false;
if (root.GetValue() == num)
return true;
return Sod(root.GetLeft(), num) || Sod(root.GetRight(), num);
}
public static int Secret(BinNode<int> root, int x)
{
if (!Sod(root, x))
return 0;
if ((root.GetLeft() != null && root.GetLeft().GetValue() == x) ||
(root.GetRight() != null && root.GetRight().GetValue() == x))
{
return root.GetValue() + Secret(root.GetLeft(), x) +
Secret(root.GetRight(), x);
}
return Secret(root.GetLeft(), x) + Secret(root.GetRight(), x);
}
עץ בינארי ששורשו root
root=50
L=20, R=25
20.L=10, 20.R=15(a)
10.L=15(b) [leaf]
15(a).L=10(c) [leaf], 15(a).R=5 [leaf]
25 is a leaf (no children drawn)
מהו הערך שיוחזר מהפעולה עבור הזימון sod(root, 25)? יש לבצע מעקב על הקוד.
Sod(root, 25)
כתבו זימון נוסף שעבורו ערך שונה מהערך מהוחזר מהערך שהוחזר בסעיף 1.
Sod(root, ?)
הסבירו מה מבצעת הפעולה sod/Sod.
מהו הערך שיוחזר מהפעולה עבור הזימון secret(root, 10)? יש לבצע מעקב מעקב. אין צורך לבצע מעקב על הקריאה לפעולה sod/Sod אלא רק לציין את הערך שחוזר מהפעולה.
Secret(root, 10)
מהו הערך שיוחזר מהפעולה עבור הזימון secret(root, 5)? אין צורך לבצע מעקב.
Secret(root, 5)
כתבו זימון נוסף שעבורו יוחזר הערך 50. אין צורך לבצע מעקב.
Secret(root, ?)
הסבירו מה מבצעת הפעולה secret/Secret.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.