Diese Problemfrage bei Amazon Interview gestellt. Ich habe versucht, eine Lösung zu finden, aber ich habe keine Lösung gefunden. Jeder kann das Problem mit den Details lösen.Spiegelbild eines n-ären Baumes? Kann mir jemand erklären?
Antwort
Dies ist eine ziemlich standardmäßige Interviewfrage.
Denken Sie über die Frage auf diese Weise nach, wenn Sie vor einem Spiegel mit Ihrem Baum standen, wie würde es aussehen. Ich würde Sie ermutigen, tatsächlich einen einfachen Baum zu zeichnen und vor dem Spiegel zu stehen und zu zeichnen, wie er aussieht.
Nachdem Sie dies getan haben, haben Sie vielleicht festgestellt, dass diese Frage fast identisch mit der Invertierung eines Baumes ist. Der Prozess der Inversion ist, auf jeder Ebene, den linken und den rechten Knoten zu vertauschen und weiter zu gehen, wenn und nur wenn der Kindknoten existiert.
Hier einige Pseudo-Code Ihnen den Einstieg:
invert_bst(bst):
bst's left node = bst's right node
if bst's left child is not null:
invert_bst(bst left child)
if bst's right child is not null:
invert_bst(bst right child)
ich dringend, diese Lösung zu implementieren versuchen würde fördern.
Viel Glück bei Ihren zukünftigen Interviews!
Danke für die Antwort. –
Kein Problem, es hilft der Community im Allgemeinen, eine richtige Antwort zu markieren, wenn sie am Ende für Sie arbeitet! – PSub
Es ist ziemlich einfach, Spiegelbild bedeutet, dass der linke Knoten des ursprünglichen Knotens zum rechten Knoten für den Spiegelbildbaum wird. Sie können die Vorbestellung verwenden und den Knoten als links für das Original rechts für den Spiegel und rechts für das Original links für den Spiegel hinzufügen.
public Node createTreeMirror(Node root) {
if (root == null) {
return null;
}
Node mirror = new Node(root.data);
mirror.right = createTreeMirror(root.left);
mirror.left = createTreeMirror(root.right);
return mirror;
}
Danke für den Lösungsansatz. –
- 1. Kann mir jemand das erklären?
- 2. Kann mir jemand erklären docker.sock
- 3. Kann mir jemand dieses Stück Code erklären
- 4. Kann mir jemand erklären, wie rayCast funktioniert?
- 5. Kann mir jemand erklären, diese `StaleDataException`
- 6. Kann mir jemand den folgenden Code erklären?
- 7. Kann mir jemand diesen Befehl sed erklären?
- 8. Kann mir jemand diese Fehler erklären?
- 9. Kann mir jemand diesen JavaScript-Code erklären?
- 10. Kann mir jemand erklären, wie das funktioniert?
- 11. kann jemand diese Funktion mir erklären
- 12. Kann mir jemand diese Haskell-Funktionen erklären?
- 13. Kann mir jemand diesen Decorator Code erklären?
- 14. Kann mir jemand ASP.NET-Routing-Syntax erklären?
- 15. Kann mir jemand den folgenden Code erklären?
- 16. Kann mir jemand C++ - Ausnahme-Spezifikationen erklären?
- 17. Kann jemand mir erklären, wie es? Ich
- 18. Callbacks & params.require - Kann mir das jemand erklären?
- 19. Kann mir bitte jemand diesen Code erklären?
- 20. Kann mir jemand diesen Fehler erklären?
- 21. Kann mir jemand erklären, wie Self Join funktioniert
- 22. Kann jemand das erklären?
- 23. Spiegelbild eines binären Baum
- 24. Jeder kann erklären mir
- 25. Kann mir jemand diese PHP-Code-Injektion erklären?
- 26. Kann mir jemand ausführlich erklären, wie man IOC-Behälter benutzt?
- 27. Kann mir jemand den folgenden Haskell Ausdruck erklären
- 28. Kann mir jemand erklären, was Status und veränderbare Daten sind?
- 29. Kann mir jemand erklären, wie man Bild mit WPF hinzufügt?
- 30. UML: Kann mir jemand das Diagramm der Fabrikmethode erklären?
Welche Art von Baum? Binary, n-ary oder etwas anderes? Nun, egal welches, das Duplikat sollte ein adäquater Ausgangspunkt sein. – Dukeling
Rechts. Ich bin auf der Suche nach N-ari Baum. Ich habe meine Frage aktualisiert. Vielen Dank. –
Ein Binärbaum ist ein Spezialfall eines n-ären Baumes. Der Code zum Spiegeln eines n-artigen Baums ist eine ziemlich einfache Erweiterung der Spiegelung eines binären Baums. –