Notas de clase: Técnica de búsqueda de la tabla de árbol: árbol binario balanceado (árbol AVL)

Árbol binario equilibrado : un árbol de clasificación binario vacío, o un árbol de clasificación binario con las siguientes propiedades:
⑴ La profundidad de los subárboles izquierdo y derecho del
nodo raíz difiere como máximo en 1; ⑵ El hijo izquierdo del nodo raíz El árbol y el subárbol derecho también son árboles binarios equilibrados.
Factor de equilibrio : el factor de equilibrio de un nodo es la diferencia entre la profundidad del subárbol izquierdo y la profundidad del subárbol derecho del nodo.
Factor de equilibrio del nodo = HL-HR
En el árbol de equilibrio, el factor de equilibrio del nodo puede ser 1 , 0 , -1 .
Subárbol mínimo desequilibrado : en la construcción de un árbol binario equilibrado, el subárbol con el nodo más cercano al nodo de inserción y el valor absoluto del factor de equilibrio mayor que 1 como raíz.
Idea básica : en el proceso de construcción de un árbol de clasificación binaria, cada vez que se inserta un nodo, primero verifique si el equilibrio del árbol se destruye debido a la inserción, si es así, encuentre el subárbol desequilibrado más pequeño, mientras mantiene el árbol de clasificación binaria En la premisa de las características, ajuste la relación de enlace entre los nodos en el subárbol desequilibrado mínimo y gire en consecuencia para convertirlo en un nuevo subárbol equilibrado.
Deje que el nodo A sea el nodo raíz del subárbol desequilibrado más pequeño. El ajuste del equilibrio de este subárbol se puede resumir en las siguientes cuatro situaciones: 1. LL tipo 2, RR tipo 3, LR tipo 4, RL tipo
árbol binario equilibrado Tipo LL
Inserte la descripción de la imagen aquí

B=A->lchild;  
A->lchild=B->rchild;   
B->rchild=A; 
A->bf=0;   
B->bf=0
if (FA==NULL)   
	root=B;   
else  if (A==FA->lchild)    
	FA->lchild=B;  
else  
	FA->rchild=B; 

Tipo de árbol binario equilibrado-RR
Inserte la descripción de la imagen aquí

B=A->rchild;  
A->rchild=B->lchild;  
B->lchild=A;  
A->bf=0;   
B->bf=0
if (FA==NULL)      
	root=B;else  if (A==FA->lchild)      
	FA->lchild=B;else     
	FA->rchild=B; 

Tipo binario equilibrado de árbol-LR
Inserte la descripción de la imagen aquí

B=A->lchild;
C=B->rchild;   
B->rchild=C->lchild;   
A->lchild=C->rchild;   
C->lchild=B;    
C->rchild=A; 

RL balanceado tipo árbol binario
Inserte la descripción de la imagen aquí

B=A->rchild;    
C=B->lchild;   
B->lchild=C->rchild;   
A->rchild=C->lchild;   
C->lchild=A;  
C->rchild=B; 

En resumen, al insertar un nuevo nodo S en un árbol de ordenación binaria equilibrado, incluye principalmente los siguientes tres pasos:
(1) Encontrar la posición de inserción y registrar el posible nodo A no balanceado (A El factor de equilibrio no es igual a 0).
(2) Inserte un nuevo nodo S y modifique el factor de equilibrio de cada nodo en la ruta de A a S.
(3) De acuerdo con los factores de equilibrio de A y B, determine si hay un desequilibrio y el tipo de desequilibrio, y enfréntelo en consecuencia.

48 artículos originales publicados · Me gusta 25 · Visita 2453

Supongo que te gusta

Origin blog.csdn.net/qq_43628959/article/details/104270428
Recomendado
Clasificación