Wie wäre es mit diesem Verfahren (funktioniert nur für statische BSTs).
Mit jedem Knoten pflegen Sie einen Zeiger auf einen anderen Knoten, der in dem auf diesem Knoten verwurzelten Unterbaum vorhanden ist. Zusammen mit dem Zeiger behalten Sie auch die Ebenennummer des Knotens bei, auf den gezeigt wird (zusammen mit Ihrer Ebenennummer). Die Wurzel befindet sich auf Stufe 0 und die Stufen steigen, wenn Sie den Baum hinuntergehen. Zunächst zeigt der Zeiger auf einen Knoten zurück auf den Knoten selbst. Die Invariante ist, dass Sie immer nur auf einen Knoten auf einer niedrigeren oder gleichen Ebene als der Ebenennummer des Knotens zeigen.
Wenn Sie im Baum nach einem Element suchen, wird Folgendes ausgeführt:
1. Be found at its location in the BST, or
2. Be found along a path to its location because some node along the node to root path has a pointer to this node, or
3. Not be found at all.
In beiden Fällen führen wir zuerst einen Vorwärtsdurchlauf durch, um den Knoten zu finden, und wenn er gefunden wird, sprudeln wir die spitzen Knoten entlang des Pfades von Wurzel zu Knoten für den gefundenen Knoten nach unten. Wenn der Knoten als Ergebnis von Fall 2 gefunden wurde, sprudeln wir nur bis zu dem Knoten, der auf den Zielknoten zeigte (dies ermöglicht es uns, für Knoten, auf die kürzlich zugegriffen wurde, schnell zu sein).
Wenn ein Knoten auf eine Ebene gesprudelt wird, die größer als der Knoten selbst ist, löschen wir den Knoten aus dem Zuordnungssatz.
Wenn auf einen Knoten ohne Zuordnung zugegriffen wird, erstellen wir eine neue Zuordnung für diesen Knoten und legen fest, dass sie die am Knoten vorhandene Zuordnung ersetzt, und sprudeln sie schrittweise auf.
Wenn auf einen Knoten zugegriffen wird, sprudelt er ganz nach oben.