what(t) בונה מחרוזת בסדר (שמאל,ערך,ימין) עטופה בסוגריים בכל רמה — תוך-סדר עם סוגריים. why(t) בונה בסדר (ערך,שמאל,ימין) — טרום-סדר עם סוגריים. תוצאה זהה בשני המקרים כשאין לאף צומת בן שמאלי.
what(t) בונה מחרוזת בסדר (שמאל,ערך,ימין) עטופה בסוגריים בכל רמה — תוך-סדר עם סוגריים. why(t) בונה בסדר (ערך,שמאל,ימין) — טרום-סדר עם סוגריים. תוצאה זהה בשני המקרים כשאין לאף צומת בן שמאלי.
public static string What(BinNode<int> t) {
string output = "(";
if (t.GetLeft() != null)
output += What(t.GetLeft());
output += t.GetValue();
if (t.GeRight() != null)
output += What(t.GeRight());
output += ")";
return output;
}
public static string Why(BinNode<int> t) {
string output = "(";
output += t.GetValue();
if (t.GetLeft() != null)
output += Why(t.GetLeft());
if (t.GeRight() != null)
output += Why(t.GeRight());
output += ")";
return output;
}
העץ הבינרי bt שבסעיף א' (שורש 4, בן שמאל 1 עם בן ימין 9, בן ימין 20 עם בנים 2,7):
4
/ \
1 20
\ / \
9 2 7
סעיף א
נתון העץ הבינרי bt הבא (ראו איור). מה תהיה תוצאת זימון הפעולה what(bt)/What(bt)? חובה להראות את המעקב!
סעיף ב
לפעולה what/What הועברה כפרמטר הפניה לשורש של עץ בינרי. המחרוזת שהוחזרה מהשיטה היא: (((30) 20 ((50) 5)) 40 (10)). ציירו את העץ הבינרי שהועבר כפרמטר לפעולה.
סעיף ג
האם קיים עץ בינארי bt בעל שלושה צמתים לפחות שעבורו תוצאת זימון הפעולה what(bt)/What(bt) תהיה זהה לתוצאת זימון הפעולה why(bt)/Why(bt)? אם כן — ציירו את העץ, אם לא — הסבירו מדוע.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.