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

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)? אם כן — ציירו את העץ, אם לא — הסבירו מדוע.

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

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

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

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