תרגול מדעי המחשב

היפוך עץ

מאתגר Java

המשימה

היפוך עץ = החלפת הבן השמאלי בבן הימני בכל צומת וצומת, לכל אורך העץ.

כתוב פעולה **רקורסיבית** שמקבלת שורש ומהפכת את העץ **במקום**, בלי
לבנות צמתים חדשים.

עבור העץ שבדוגמה, הסריקה התוכית לפני ההיפוך היא 1 2 3 4 7 9,
ואחריו 9 7 4 3 2 1.

הנחיות:
• בכל צומת: החלף בין getLeft ל-getRight בעזרת משתנה עזר, בדיוק כמו
  החלפת שני משתנים רגילים.
• אחר כך הפוך רקורסיבית את שני תת-העצים. אפשר גם לפני ההחלפה —
  חשוב מדוע שתי האפשרויות נכונות כאן.
• אסור ליצור צמתים חדשים. העץ המקורי הוא זה שמשתנה.
• עץ ריק — אין מה לעשות.

ממשק מבני הנתונים כבר מצורף למשימה.

```ds:tree
{"title":"לפני ההיפוך","nodes":["4","2","7","1","3",null,"9"]}
```

```ds:tree
{"title":"אחרי ההיפוך","nodes":["4","7","2","9",null,"3","1"]}
```

קוד הפתיחה

public class Main {

    public static void mirror(BinNode<Integer> root) {
        // כתוב את הפתרון כאן — רקורסיבי, במקום
    }

    // עזר לבדיקה — סריקה תוכית
    public static void inorder(BinNode<Integer> root) {
        if (root == null) return;
        inorder(root.getLeft());
        System.out.println(root.getInfo());
        inorder(root.getRight());
    }

    public static void main(String[] args) {
        //        4
        //       / \
        //      2   7
        //     / \    \
        //    1   3    9
        BinNode<Integer> one   = new BinNode<Integer>(1);
        BinNode<Integer> three = new BinNode<Integer>(3);
        BinNode<Integer> nine  = new BinNode<Integer>(9);
        BinNode<Integer> two   = new BinNode<Integer>(one, 2, three);
        BinNode<Integer> seven = new BinNode<Integer>(null, 7, nine);
        BinNode<Integer> root  = new BinNode<Integer>(two, 4, seven);

        inorder(root);    // 1 2 3 4 7 9
        System.out.println("---");
        mirror(root);
        inorder(root);    // 9 7 4 3 2 1

        mirror(null);     // לא קורס
    }
}

כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.

התרגיל הבא סכום ערכי העץ
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון — כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות בדיקה חיצוני.