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

פעולה רקורסיבית special הבודקת שכל צומת בעץ בינרי אינו גדול מעומקו (r, שורש בעומק 0), ושתי פעולות what ו-where המאתרות את המינימום/מקסימום בעץ חיפוש בינרי דרך הצומת הקיצוני שמאלה/ימינה.

public static  boolean special(BinNode<Integer> t)
{
     return special(t, 0);
}
private static  boolean special(BinNode<Integer> 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<Integer> bt)
{
    if(bt.getLeft() == null)
        return bt.getValue();
    return what(bt.getLeft());
}
public static int where(BinNode<Integer> 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)? אם כן — ציירו את העץ, אם לא — הסבירו מדוע עץ כזה לא קיים.

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

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

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

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