Definio Uma rvore T (tree) um conjunto finito de N estruturas elementares, chamados nodos (ns), tal que se N > 0, ento: 1. Existe um nodo especial, chamado raiz da rvore; 2. Os restantes N1 nodos esto particionados em M conjuntos disjuntos: S1, S2, ......, SM, onde cada um destes conjuntos tambm uma rvore. As rvores S1, S2, ......, SM so chamadas sub-rvores de T. rvores so estruturas de dados no sequnciais extremamente teis em muitas aplicaes. rvores so estruturas de dados que caracterizam uma relao entre os dados que a compem. A relao existente entre os nodos uma relao de hierarquia, onde um conjunto de nodos hierarquicamente subordinado a outro.
Identao A B
D E F G
Terminologia
A raiz de uma rvore chamada de pai de suas subrvores. Nodos com o mesmo pai so denominados irmos. O grau de um nodo por definio o nmero de subrvores do nodo. O grau da rvore grau mximo entre todos os nodos. Um nodo folha (terminal ou externo) tem grau zero, ou seja, no tem sub-rvores. O nodo raiz tem nvel 0, os nodos filhos da raiz tm nvel 1 e, assim, sucessivamente. A altura de uma rvore igual ao nmero de nveis desta rvore. Um nodo folha tem altura unitria. Um conjunto de rvores disjuntas forma uma floresta.
Raiz Nvel 1 Nvel 2
Arestas
Grau 3
Nodos folhas
rvores Binrias
So rvores cujos nodos possuem grau 0, 1 ou 2, ou seja tm no mximo 2 sub-rvores, denominadas: sub-rvore esquerda (E) sub-rvore direita (D). rvores binrias combinam as vantagens de 2 estruturas: Vetor ordenado (busca eficiente) Lista encadeada (insero e excluso eficientes) Estrutura de dados:
tipo ArvBin = ^TArvBin TArvBin = registro Chave : inteiro {caracter, string, etc.} E : ArvBin {sub-rvore esquerda} D : ArvBin {sub-rvore direita} {outros campos especficos da aplicao} fim
4 2 1 3 6 5 7
procedimento Pre_ordem(T : ArvBin) inicio se T Nulo ento inicio Processa(T) Pre_ordem(T^.E) Pre_ordem(T^.D) fim fim
1 2 3 4 5 6 7
procedimento In_ordem(T : ArvBin) inicio se T Nulo ento inicio In_ordem(T^.E) Processa(T) In_ordem(T^.D) fim fim
1 3 2 5 7 6 4
procedimento Pos_ordem(T : ArvBin) inicio se T Nulo ento inicio Pos_ordem(T^.E) Pos_ordem(T^.D) Processa(T) fim fim
4 2 1 3 5 6 7
4 2 6 1 3 5 7
rvore Estritamente Binria: uma A.B. na qual todo nodo tem 0 ou 2 subrvores, ou seja, nenhum nodo tem filho nico.
2 1 3 5 C 6
8 9 7
B A D
E G F
as duas sub-rvores tm a mesma altura. a sub-rvore direita mais alta que a esquerda. a sub-rvore esquerda mais alta que a direita;
Em uma AVL, |FB(N)| 1 para todos os nodos A altura mxima de uma AVL no mximo 45% maior que uma rvore perfeitamente balanceada.
Rotao Direita
03 02 01
0 -1 -2
RotDir
P Pai(N) {pai do nodo} F P^.E {filho esquerdo} se P Nulo ento P^.E F N^.E F^.D F^.D N N F
02 01
0
03
Rotao Esquerda
01
+2
RotEsq
P Pai(N) {pai do nodo} F P^.D {filho direito} se P Nulo ento P^.D F N^.D F^.E F^.E N N F
02
+1
02
0
03
01
03
DupRotDir
RotEsq(N^.E)
03 02
-1
-2
02 01
0
RotDir(N)
0
02
01
03
DupRotDir
RotDir(N^.D)
01 03
-1
+2
02
+1
02
0
RotEsq(N)
0
02
03
01
03