Ein unausgeglichener Baum wird ausgeglichen, indem eine entsprechende Rotationsoperation ausgeführt wird. Im Abschnitt „Bäume neu ausbalancieren“ wurde erläutert, wie Rotationen an einem Knoten durchgeführt werden. Der folgende Code gibt den Algorithmus für die LL-Rotation an, wie in der Abbildung unten dargestellt.
1 balanceLL(TreeNode A, TreeNode parentOfA) {
2 Sei B das linke Kind von A.
3
4 if (A ist die Wurzel)
5 Sei B die neue Wurzel
6 sonst {
7 if (A ist ein linkes Kind von parentOfA)
8 Sei B ein linkes Kind von parentOfA;
9 sonst
10 Sei B ein rechtes Kind von parentOfA;
11 }
12
13 Machen Sie T2 zum linken Teilbaum von A, indem Sie B.right zu A.left;
zuweisen
14 Machen Sie A zum rechten Kind von B, indem Sie A B zuordnen.right;
15 Aktualisieren Sie die Höhe von Knoten A und Knoten B;
16 } // Ende der Methode
Beachten Sie, dass die Höhe der Knoten A und B geändert werden kann, die Höhen anderer Knoten im Baum jedoch nicht geändert werden. Sie können die RR-, LR- und RL-Rotationen auf ähnliche Weise implementieren.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3