סעיף א
נתונה הפעולה why המקבלת הפניה לשורש עץ בינארי של מספרים שלמים:
public static int why(BinNode<Integer> 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<Integer> what (int n){
if (n == 0)
return null;
else
{
if (n % 2 == 0)
return new BinNode<Integer>(what(n-1), n, null);
else
{
BinNode<Integer> tree = what(n-1);
if(tree!=null)
{
int val = why(tree);
tree.setRight(new BinNode<Integer>(n + val));
}
return tree;
}
}
}
סעיף ג
עקבו אחרי זימון הפעולה what(7) ורשמו מה תחזיר הפעולה.
יש להראות את תוכן העץ בחזרה מכל קריאה רקורסיבית.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.