Heim > Java > javaLernprogramm > Hauptteil

Überschreiben der Einfügemethode

WBOY
Freigeben: 2024-07-25 09:14:13
Original
629 Leute haben es durchsucht

Overriding the insert Method

Das Einfügen eines Elements in einen AVL-Baum ist dasselbe wie das Einfügen in einen BST, außer dass der Baum möglicherweise neu ausbalanciert werden muss. Ein neues Element wird immer als Blattknoten eingefügt. Durch das Hinzufügen eines neuen Knotens kann die Höhe der Vorgänger des neuen Blattknotens zunehmen. Überprüfen Sie nach dem Einfügen eines neuen Knotens die Knoten entlang des Pfads vom neuen Blattknoten bis zur Wurzel. Wenn ein unausgeglichener Knoten gefunden wird, führen Sie eine entsprechende Drehung mit dem Algorithmus im folgenden Code durch.

1 balancePath(E e) {
2 Holen Sie sich den Pfad vom Knoten, der das Element e enthält, zur Wurzel,
3 wie in Abbildung 26.9 dargestellt;
4 für jeden Knoten A im Pfad, der zur Wurzel {
führt 5 Aktualisieren Sie die Höhe von A;
6 Es sei parentOfA das übergeordnete Element von A,
7, der der nächste Knoten im Pfad ist, oder null, wenn A die Wurzel ist;
8
9 Schalter (balanceFactor(A)) {
10 Fall -2: wenn balanceFactor(A.left) == -1 oder 0
11 LL-Rotation durchführen; // Siehe Abbildung 26.2
12 andere
13 LR-Rotation durchführen; // Siehe Abbildung 26.4
14 Pause;
15 Fall +2: wenn balanceFactor(A.right) == +1 oder 0
16 RR-Rotation durchführen; // Siehe Abbildung 26.3
17 andere
18 RL-Rotation durchführen; // Siehe Abbildung 26.5
19 } // Ende des Wechsels
20 } // Ende für
21 } // Ende der Methode

Der Algorithmus berücksichtigt jeden Knoten im Pfad vom neuen Blattknoten zur Wurzel. Aktualisieren Sie die Höhe des Knotens auf dem Pfad. Wenn ein Knoten ausgeglichen ist, ist keine Aktion erforderlich. Wenn ein Knoten nicht ausgeglichen ist, führen Sie eine entsprechende Rotation durch

Das obige ist der detaillierte Inhalt vonÜberschreiben der Einfügemethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!