אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2023 · קיץ מועד א · שאלה 7כל שאלות המבחן ←
רקורסיהאלגוריתמים רקורסיביים

לפניכם פעולה רקורסיבית המקבלת הפנייה לשורש של עץ בינרי, ולפניכם שתי פעולות המקבלות הפנייה לשורש של עץ חיפוש בינרי (Binary Search Tree):

public static  bool Special(BinNode<int> t)
{
     return Special(t, 0);
}
private static  bool Special(BinNode<int> t, int r)
{
    if (t==null)
         return true;
    if (t.GetValue()<r)
         return false;
   return Special(t.GetLeft(), r+1) && Special(t.GetRight(), r+1);
}
public static int What(BinNode<int> bt)
{
    if(bt.GetLeft() == null)
        return bt.GetValue();
    return What(bt.GetLeft());
}
public static int Where(BinNode<int> bt)
{
    while(bt.GetRight()!=null)
    {
        bt = bt.GetRight();
    }
    return bt.GetValue();
}
סעיף א

לפניכם פעולה רקורסיבית המקבלת הפנייה לשורש של עץ בינרי (ראו קוד special לעיל). תנו דוגמה לעץ המכיל לפחות שישה איברים שעבורו תחזיר הפעולה special(t) את הערך true.

סעיף ב

מהי מטרת הפעולה special?

סעיף ג

נתונות שתי פעולות המקבלות הפנייה לשורש של עץ חיפוש בינרי (Binary Search Tree): what (קוד לעיל) ו-where (קוד לעיל). מהן מטרות הפעולות what ו-where?

סעיף ד

האם קיים עץ חיפוש בינרי bt הכולל לפחות שלושה צמתים שעבורו מתקיים: what(bt) = where(bt)? אם כן — ציירו את העץ, אם לא — הסבירו מדוע עץ כזה לא קיים.

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

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

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

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