סעיף א
נתונה הפעולה Why המקבלת הפניה לשורש עץ בינארי של מספרים שלמים:
public static int Why(BinNode<int> t){
if(!t.HasLeft()&&!t.HasRight()) return t.GetValue();
if(t.HasLeft()) return Why(t.GetLeft());
return Why(t.GetRight());
}
ציירו עץ בעל שישה צמתים שעבורו הפעולה תחזיר ערך ארבע. כל ערכי הצמתים שונים זה מזה.
סעיף ב
כתבו את הפעולה Why בצורה הלא רקורסיבית.
נתונה הפעולה What המקבלת מספר שלם וחיובי n. הפעולה משתמשת בפעולה Why.
public static BinNode<int> What (int n){
if (n == 0)
return null;
else
{
if (n % 2 == 0)
return new BinNode<int>(What(n-1), n, null);
else
{
BinNode<int> tree = What(n-1);
if(tree!=null)
{
int val = Why(tree);
tree.SetRight(new BinNode<int>(n + val));
}
return tree;
}
}
}
סעיף ג
עקבו אחרי זימון הפעולה What(7) ורשמו מה תחזיר הפעולה.
יש להראות את תוכן העץ בחזרה מכל קריאה רקורסיבית.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.