Excluir um elemento de uma árvore AVL é o mesmo que excluí-lo de um BST, exceto que a árvore pode precisar ser rebalanceada. Conforme discutido na Seção Excluindo Elementos de um BST, para excluir um elemento de uma árvore binária, o algoritmo primeiro localiza o nó que contém o elemento. Deixe atual apontar para o nó que contém o elemento na árvore binária e pai apontar para o pai do nó atual. O nó atual pode ser um filho esquerdo ou um filho direito do nó pai.
Dois casos surgem ao excluir um elemento.
Caso 1: O nó atual não possui filho esquerdo, conforme mostrado na Figura abaixo (a). Para excluir o nó atual, basta conectar o nó pai com o filho direito do nó atual, conforme mostrado na Figura abaixo (b). A altura dos nós ao longo do caminho do nó pai até a raiz pode ter diminuído. Para garantir que a árvore esteja equilibrada, invoque
balancePath(parent.element);
Caso 2: O nó atual tem um filho esquerdo. Deixe rightMost apontar para o nó que contém o maior elemento na subárvore esquerda do nó atual e parentOfRightMost apontar para o nó pai do rightMost nó , conforme mostrado na Figura abaixo (a). O nó rightMost não pode ter um filho direito, mas pode ter um filho esquerdo. Substitua o valor do elemento no nó atual por aquele no nó rightMost, conecte o nó parentOfRightMost com o filho esquerdo do rightMost nó e exclua o nó rightMost, conforme mostrado na Figura abaixo (b).
A altura dos nós ao longo do caminho de parentOfRightMost até a raiz pode ter diminuído. Para garantir que a árvore esteja equilibrada, invoque
balancePath(parentOfRightMost);
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