אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2025 · קיץ מועד Special · שאלה 3כל שאלות המבחן ←
עציםעצים בינאריים

לפניכם עץ בינארי ששורשו 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)
סעיף א(1)

מהו הערך שיוחזר מהפעולה עבור הזימון sod(root, 25)? יש לבצע מעקב על הקוד.

Sod(root, 25)

סעיף א(2)

כתבו זימון נוסף שעבורו ערך שונה מהערך מהוחזר מהערך שהוחזר בסעיף 1.

Sod(root, ?)

סעיף א(3)

הסבירו מה מבצעת הפעולה sod/Sod.

סעיף ב(1)

מהו הערך שיוחזר מהפעולה עבור הזימון secret(root, 10)? יש לבצע מעקב מעקב. אין צורך לבצע מעקב על הקריאה לפעולה sod/Sod אלא רק לציין את הערך שחוזר מהפעולה.

Secret(root, 10)

סעיף ב(2)

מהו הערך שיוחזר מהפעולה עבור הזימון secret(root, 5)? אין צורך לבצע מעקב.

Secret(root, 5)

סעיף ב(3)

כתבו זימון נוסף שעבורו יוחזר הערך 50. אין צורך לבצע מעקב.

Secret(root, ?)

סעיף ב(4)

הסבירו מה מבצעת הפעולה secret/Secret.

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי