Несбалансированное дерево становится сбалансированным путем выполнения соответствующей операции вращения. В разделе «Ребалансировка деревьев» показано, как выполнять вращения узла. В приведенном ниже коде представлен алгоритм вращения LL, как показано на рисунке ниже.
1 BalanceLL(TreeNode A, TreeNodeparentOfA) {
2 Пусть B — левый потомок A.
3
4, если (A — корень)
5 Пусть B будет новым корнем
6 еще {
7, если (A — левый дочерний элемент родительского объекта ParentOfA)
8. Пусть B — левый дочерний элемент родительского элемента ParentOfA;
еще 9
10 Пусть B — правый дочерний элемент родительского элемента A;
11 }
12
13 Сделайте T2 левым поддеревом A, присвоив B.right A.left;
14 Сделайте A правым дочерним элементом B, присвоив A B.right;
15. Обновите высоту узла A и узла B;
16 } // Конец метода
Обратите внимание, что высоту узлов A и B можно изменить, но высоты других узлов в дереве не изменяются. Вы можете реализовать ротацию RR, LR и RL аналогичным образом.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3