המשימה
היפוך עץ = החלפת הבן השמאלי בבן הימני בכל צומת וצומת, לכל אורך העץ. כתוב פעולה **רקורסיבית** שמקבלת שורש ומהפכת את העץ **במקום**, בלי לבנות צמתים חדשים. עבור העץ שבדוגמה, הסריקה התוכית לפני ההיפוך היא 1 2 3 4 7 9, ואחריו 9 7 4 3 2 1. הנחיות: • בכל צומת: החלף בין getLeft ל-getRight בעזרת משתנה עזר, בדיוק כמו החלפת שני משתנים רגילים. • אחר כך הפוך רקורסיבית את שני תת-העצים. אפשר גם לפני ההחלפה — חשוב מדוע שתי האפשרויות נכונות כאן. • אסור ליצור צמתים חדשים. העץ המקורי הוא זה שמשתנה. • עץ ריק — אין מה לעשות. ממשק מבני הנתונים כבר מצורף למשימה. [עץ בינארי] [עץ בינארי]
קוד הפתיחה
using System;
class Program {
static void Mirror(BinNode<int> root) {
// כתוב את הפתרון כאן — רקורסיבי, במקום
}
// עזר לבדיקה — סריקה תוכית
static void Inorder(BinNode<int> root) {
if (root == null) return;
Inorder(root.GetLeft());
Console.WriteLine(root.GetInfo());
Inorder(root.GetRight());
}
static void Main() {
// 4
// / \
// 2 7
// / \ \
// 1 3 9
BinNode<int> one = new BinNode<int>(1);
BinNode<int> three = new BinNode<int>(3);
BinNode<int> nine = new BinNode<int>(9);
BinNode<int> two = new BinNode<int>(one, 2, three);
BinNode<int> seven = new BinNode<int>(null, 7, nine);
BinNode<int> root = new BinNode<int>(two, 4, seven);
Inorder(root); // 1 2 3 4 7 9
Console.WriteLine("---");
Mirror(root);
Inorder(root); // 9 7 4 3 2 1
Mirror(null); // לא קורס
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.