Ich habe die Nummer von 1 bis 31 und ich muss einen binären Suchbaum mit diesen Zahlen mit der kleinsten Tiefe erstellen. Ich dachte daran, 31/2 zu teilen und 16 meine Wurzel zu machen. Danach 16/2 teilen und 8 als nächstes einfügen, aber das scheint nicht zu funktionieren. Gibt es einen Algorithmus, um zu wissen, in welcher Reihenfolge die Zahlen einzugeben sind, damit der Baum die kleinste mögliche Tiefe haben kann?Erstellen eines binären Suchbaums mit der kleinsten Tiefe
2
A
Antwort
3
Wenn Sie Nummern 1-31, 31 Zahlen haben, möchten Sie 15 Zahlen links von der Wurzel und 15 Zahlen rechts.
Also ist die Wurzel 16 (das ist nicht 31/2, sondern 31/2 + 1).
Wiederholen Sie den gleichen Vorgang, der linke Teilbaum hat 15 Elemente, Sie wollen also sieben Zahlen auf jeder Seite dieses Teilbaums.
Die Wurzel des linken Teilbaums ist also 8 (das ist 15/2 + 1; hier ist ein Muster).
Eine ähnliche Berechnung gibt die Wurzel des rechten Teilbaums an.
Und so weiter.
Verwandte Themen
- 1. Durchschnittliche Höhe eines binären Suchbaums
- 2. Balancieren eines ternären Suchbaums
- 3. Schema - Anzahl der internen Knoten eines binären Suchbaums, die genau ein Kind haben
- 4. Python erstellen einen binären Suchbaum mit der vorhandenen Funktion
- 5. In einem Inorder-Traversal eines binären Suchbaums, wo im Code durchläuft es?
- 6. Erstellen eines binären Installationspakets für CentOS 5.2
- 7. Erstellen eines binären Baumes aus String-Eingabe
- 8. ein Streudiagramm mit der kleinsten Quadrate Regressionslinie Erstellen Typ gemäß
- 9. Wie validiert man einen binären Suchbaum?
- 10. Tiefe Kopie eines Drawable
- 11. erstellen binären Baum, der keine Duplikate akzeptiert
- 12. Verarbeiten eines binären Plists
- 13. Dynamisch JavaScript-Objekte mit variabler Tiefe erstellen
- 14. Tiefe/Perspektive mit CoreImage?
- 15. Spiegelbild eines binären Baum
- 16. Traversing eines binären Baumes rekursiv
- 17. Hilfe erforderlich Erstellen eines binären Baumes gegeben Wahrheit Tabelle
- 18. tiefe Kopie der Doktrin
- 19. Entfernen der binären Suche
- 20. Entropie-Codierung eines binären Datenstroms
- 21. C++ Implementierung eines binären Heap
- 22. Sortieren eines Arrays mit alternativen kleinsten größten Werten
- 23. Sind doppelte Schlüssel in der Definition von binären Suchbäumen erlaubt?
- 24. Erstellen eines Prozess-Baums
- 25. Submatrix mit einem kleinsten Durchschnitt
- 26. Kleinsten Wert mit Toleranz finden
- 27. Berechne die Vertrauensbande der kleinsten Quadrate
- 28. Hochladen der binären
- 29. Implementierung eines expliziten Stacks in einer Tiefe erste Suche
- 30. Erstellen Sie einen vollständigen binären Suchbaum aus der Liste
Es gibt Algorithmen, die das Balancieren von Bäumen ermöglichen, die dem besser entsprechen würden. Auf diese Weise spielt die Reihenfolge der Einfügung keine Rolle, aber der Baum ist minimal. [AVL] (https://en.wikipedia.org/wiki/AVL_tree) ist in der Nähe, Internal Path Reduction Bäume sind noch besser (garantiert Minimum), kann aber etwas länger dauern. – Obicere
Meistens irrelevant beiseite: 31/2 sollte 15 für die Wurzel geben, nicht 16. –