Uma árvore desequilibrada torna-se equilibrada ao realizar uma operação de rotação apropriada. A seção Rebalanceamento de árvores ilustra como realizar rotações em um nó. O código abaixo fornece o algoritmo para a rotação LL, conforme ilustrado na Figura abaixo.
1 balanceLL(TreeNode A, TreeNode parentOfA) {
2 Seja B o filho esquerdo de A.
3
4 se (A é a raiz)
5 Seja B a nova raiz
6 outros {
7 se (A é filho esquerdo de parentOfA)
8 Seja B um filho esquerdo de parentOfA;
9 outros
10 Seja B um filho certo de parentOfA;
11}
12
13 Faça de T2 a subárvore esquerda de A atribuindo B.right a A.left;
14 Faça de A o filho certo de B atribuindo A a B.right;
15 Atualize a altura do nó A e do nó B;
16 } // Fim do método
Observe que a altura dos nós A e B pode ser alterada, mas as alturas de outros nós na árvore não são alteradas. Você pode implementar as rotações RR, LR e RL de maneira semelhante.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3