Ich habe zwei binäre Suchbäume gegeben. Zum Beispiel, A und B. Als nächstes wurde ich gebeten, den Baum B vom Baum A. lösche
Durch Deletion, meine ich in B alle Knoten von A. Hinweis vorhanden löschen: B ist nicht notwendigerweise eine Unterstruktur von A.
zB:
A:
50 / \ 10 75 / / \ 1 60 90
B:
10 / \ 1 75
Daraus resultierende Baum sollte sein:
50 \ 60 \ 90
Zwei Ansätze kam mir in den Sinn:
A1:
Knoten * deleteTree (Knoten * A, Knoten * B);
Nehmen Sie die Wurzel des Baumes B. löschen Knoten von Baum A (durch normale BSt Löschmethode). Weiter unterteilt das Problem in zwei Teile - für den linken Teilbaum B und der rechten Teilbaum von B. Für jede der Teilstruktur rekursiv. Für den linken Teilbaum, den der Knoten der Knoten belegt , die für den rechten Teilbaum als Wurzel für Baum A. dienen, die Inorder Nachfolger des gelöschten Knoten sollte Server als Stammbaum für A. gelöscht sollte
A2: Der andere Ansatz ist ein wenig seltsam. Ich finde die Inorder und Vorordnungsdurchquerung Baum A. finden und alle Knoten im Baum B löschen zusammen mit Rekursion binäre Suche (wir die Preorder nicht ändern). Schließlich recostruct unsere bst vom Inorder (Rest-) und der Preorder (unverändert).
Prob A: Hier finden Sie eine effiziente Möglichkeit für BST.
Prob B: Finden Sie eine effiziente Möglichkeit , für jede Binary Tree (nicht nur BST).













