פעולה רקורסיבית special הבודקת שכל צומת בעץ בינרי אינו גדול מעומקו (r, שורש בעומק 0), ושתי פעולות what ו-where המאתרות את המינימום/מקסימום בעץ חיפוש בינרי דרך הצומת הקיצוני שמאלה/ימינה.
פעולה רקורסיבית 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)? אם כן — ציירו את העץ, אם לא — הסבירו מדוע עץ כזה לא קיים.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.