Ich persönlich denke , dass der beste Weg , dies zu tun wäre für einen randomisierte binären Suchbaum wie eine gehen Treap . Dies garantiert nicht unbedingt , dass der Baum wird ausgeglichen, aber mit hoher Wahrscheinlichkeit wird der Baum eine gute Balance Faktor haben. A Treap arbeitet , indem jedes Element des Baumes mit einer gleichmäßig Zufallszahl vermehren, so gewährleistet , dass der Baum ein binärer Suchbaum mit Bezug auf die Tasten und einen Haufen in Bezug auf die einheitlichen Zufallswerten ist. Einsetzen in eine Treap ist extrem einfach:
- Wählen Sie eine Zufallszahl an das neu hinzugefügte Element zuzuordnen.
- Legen des Elements in die BST unter Verwendung von Standard-BST Insertion.
- Während der neu eingefügte Element der Taste größer ist als die Schlüssel des übergeordneten, führen einen Baum Drehung das neue Element über seine Mutter zu bringen.
Der letzte Schritt ist die einzige wirklich hart, aber wenn man einige Zeit hatte es zu arbeiten, auf einem Whiteboard Ich bin ziemlich sicher, dass Sie dies umsetzen könnte in einem Interview on-the-fly.
Eine weitere Option , die funktionieren könnte wäre, eine verwenden spreizt Baum . Es ist eine andere Art von Fast BST , die umgesetzt werden können , haben Sie einen Standard BST Insert - Funktion übernehmen und die Fähigkeit Baum Drehungen zu tun. Wichtig sind, spreizen Bäume extrem in der Praxis schnell, und es ist bekannt , dass sie (bis auf einem konstanten Faktor) mindestens so gut wie jeder anderen statischen binären Suchbaum sind.
Je nachdem , was gemeint ist „Suchbaum,“ könnte man auch überlegen , die ganzen Zahlen in irgendeiner Struktur für die Suche von ganzen Zahlen optimiert Speicherung. Zum Beispiel könnten Sie ein verwenden bitweise trie die ganzen Zahlen zu speichern, die Lookup - in Zeit proportional zu der Anzahl von Bits in einem Maschinenwort unterstützt. Dies kann sehr gut umgesetzt werden , um eine rekursive Funktion über die Bits zu suchen, und erfordert keine Art von Drehungen. Wenn Sie eine Implementierung in 15 Minuten zu sprengen benötigt, und wenn der Interviewer Sie von den Standard binären Suchbäume abweichen können, dann könnte dies eine große Lösung sein.
Hoffe das hilft!