Árvores - uemfuber/estr_dados/arvoreavl.pdf · 2019-10-29 · p r o f. y a n d r e m a l d o n a d...
TRANSCRIPT
![Page 1: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/1.jpg)
Pro
f. Yandre
Mald
onado - 1
ÁRVORES
Prof. Flávio Rogério Uber
Prof. Yandre Maldonado e Gomes da Costa
![Page 2: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/2.jpg)
Pro
f. Yandre
Mald
onado - 2
Árvores
Árvores são estruturas de dados que caracterizam uma relação entre os dados que a compõem;
A relação existente entre os dados (nós) de uma árvore, é uma relação de hierarquia;
Formalmente, uma árvore é um conjunto finito T de um ou mais nós, tais que:
• Existe um nó denominado raiz da árvore;• Os demais nós formam m0 conjuntos separados T1, T2, ...,
Tm, onde cada um destes conjuntos é uma árvore. As árvores Ti (1i m) recebem a denominação de subárvores.
![Page 3: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/3.jpg)
Pro
f. Yandre
Mald
onado - 3
Árvores
Esquematicamente, uma árvore pode ser representada da seguinte forma:
A
CB D
E GF H
KI J
![Page 4: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/4.jpg)
Pro
f. Yandre
Mald
onado - 4
Árvores
Terminologia: No exemplo anterior, os quadrados representam os nós da
árvore, cuja raiz é o nó ‘A’; Pela definição de árvore, cada nó da árvore é raiz de uma
subárvore. O número de subárvores de um nó é o grau deste nó;
O grau de uma árvore é igual ao grau do nó de maior grau pertencente à mesma;
Um nó de grau zero é chamado de folha ou nó terminal; O nível do nó é definido como sendo o igual ao número de
nós que o separam da raiz; A altura de uma árvore é definida como sendo o nível mais
alto da árvore; Um conjunto de zero ou mais árvores disjuntas é chamado
de floresta;
![Page 5: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/5.jpg)
Pro
f. Yandre
Mald
onado - 5
Árvores Em relação a árvore descrita anteriormente, pode-se observar:
Nodo Grau Nível Observações
A 3 0 Raiz da Árvore
B 1 1
C 2 1
D 1 1
E 0 2 Nó folha
F 0 2 Nó folha
G 0 2 Nó folha
H 3 2
I 0 3 Nó folha
J 0 3 Nó folha
K 0 3 Nó folha
![Page 6: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/6.jpg)
Pro
f. Yandre
Mald
onado - 6
Árvores Quando a ordem das subárvores é significativa, a árvore é
chamada de ordenada. Neste caso, há diferença entre as seguintes árvores:
Entretanto, quando a ordem das subárvores não é relevante, diz-se que a árvore é orientada, uma vez que apenas a orientação dos nós é importante (neste caso as duas árvores mostradas acima são iguais);
A
CB
A
BC
![Page 7: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/7.jpg)
Pro
f. Yandre
Mald
onado - 7
Árvores A raiz de uma árvore é chamada de pai das raízes de suas
subárvores. As raízes das subárvores de um nó são chamadas de irmãos que, por sua vez, são filhos de seu nó pai.
Formas de Representação de Árvores: Árvore convencional (grafos)
A
CB
ED F
ouA
C
B
E
D
F
![Page 8: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/8.jpg)
Pro
f. Yandre
Mald
onado - 8
Árvores
Conjuntos Aninhados ou Diagramas de Venn:
Parênteses Aninhados:
( A ( B ( D ) ( E ) ) ( C ( F ) ) )
AB C
D E F
![Page 9: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/9.jpg)
Pro
f. Yandre
Mald
onado - 9
Árvores
Barramento ou Tabelas:
A
B
D
E
C
F
Notação Decimal (DEWEY):
1.A, 1.1.B, 1.1.1.D, 1.1.2.E, 1.2.C, 1.2.1.F.
![Page 10: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/10.jpg)
Pro
f. Yandre
Mald
onado - 1
0
Árvores
Aplicações de árvores: Representações genealógicas; Representação de objetos que possuem relação
hierárquica.• Exemplo: uma universidade
... ...
...
...
Universidade
C. ExatasC. Tec.
D. Eng.D. Inf.
AEDI
C. Bio.
TC
José Maria
![Page 11: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/11.jpg)
Pro
f. Yandre
Mald
onado - 1
1
Árvores
Aplicações:Índices de arquivos;Árvores genealógicas ou hereditárias;Organização de empresa
(organograma);Avaliação de expressões;Árvores de decisão;Algoritmos e Classificação
![Page 12: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/12.jpg)
Pro
f. Yandre
Mald
onado - 1
2
Árvores Exercício: dada a seguinte árvore, encontre:
A raiz da árvore; Todos os nós folha; O grau e o nível de cada nó; A altura da árvore; Todas as relações entre nós (irmão, pai, filho); Descreva a árvore com todas as representações estudadas;
A
B
C F
G
D
E
I
H
L
K
J
M
N
![Page 13: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/13.jpg)
Pro
f. Yandre
Mald
onado - 1
3
Árvores Binárias
“Conjunto finito de nós que, ou é vazio, ou consiste de uma raiz ligando até duas outras árvores binárias.”
São árvores onde o grau de cada nó é menor ou igual a dois;
As subárvores de cada nó são chamadas subárvore esquerda e subárvore direita;
Assim, se um nó possuir apenas uma subárvore, ela deve ser estabelecida como direita ou esquerda;
Uma árvore binária pode ser vazia, isto é, não possuir nenhum nó;
![Page 14: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/14.jpg)
Pro
f. Yandre
Mald
onado - 1
4
Árvores Binárias
Alocação:Por adjacência:
• Nós representados seqüencialmente na memória;
• Esta alocação não é conveniente na maioria dos casos, pois dificulta a manipulação da estrutura;
A
C|B|
G| |
D | E |
F| |
A 2 B 1 D 1 F 0 C 1 E 1 G 0
![Page 15: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/15.jpg)
Pro
f. Yandre
Mald
onado - 1
5
typedef struct
{
int chave;
//Outros Campos
} Registro;
struct Nodo
{
Registro Reg;
Nodo* Dir;
Nodo* Esq;
};
Árvores Binárias
Alocação:Encadeada:
• Mais adequada;• Permite melhor manipulação
dos dados com diversas ordens de acesso aos nós;
• Os nós são alocados dinamicamente;
A
C|B|
G| |
D | E |
F| |
nó
Item de dado
esq dir
| = NULL
![Page 16: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/16.jpg)
Pro
f. Yandre
Mald
onado - 1
6
Árvores Binárias Caminhamento em Árvores Binárias:
É a forma de percorrer todos os nós da árvore, com o objetivo de consultar ou alterar suas informações;
Existem vários métodos de tal forma que cada nó seja “visitado” apenas uma vez;
Um completo percurso da árvore nos dá um arranjo linear sobre os nós;
São três os principais caminhos utilizados para percorrer uma árvore binária: visitar os nós em ordem pré-fixada, pós-fixada, ou in-fixa (in-ordem).
![Page 17: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/17.jpg)
Pro
f. Yandre
Mald
onado - 1
7
Árvores Binárias Formas de caminhar:
Pré-ordem: RED• Visitar a raiz;• Percorrer a subárvore esquerda;• Percorrer a subárvore direita;
In-ordem: ERD (percorre as chaves em ordem crescente)• Percorrer a subárvore esquerda;• Visitar a raiz;• Percorrer a subárvore direita;
Pós-ordem: EDR (ou forma polonesa)• Percorrer a subárvore esquerda;• Percorrer a subárvore direita;• Visitar a raiz;
Obs.: o termo visita indica alguma manipulação sobre o nó.
![Page 18: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/18.jpg)
Pro
f. Yandre
Mald
onado - 1
8
Árvores Binárias Exemplo: dada a seguinte árvore, verifique a seqüência de
nos percorridos segundo as três formas de caminhar sobre árvores binárias.
1
32
11| |10| |
5 |4| | 76|
8| | 9| |
Pré-ordem: 1, 2, 4, 5, 8, 3, 6, 9, 7, 10, 11
In-ordem: 4, 2, 8, 5, 1, 6, 9, 3, 10, 7, 11
Pós-ordem: 4, 8, 5, 2, 9, 6, 10, 11, 7, 3, 1 (polonesa)
![Page 19: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/19.jpg)
Pro
f. Yandre
Mald
onado - 1
9
Árvore Binária Algoritmos de travessia em árvores binárias
observe que os procedimentos são recursivos, devido à natureza recursiva da estrutura (árvore).
void in_ordem (Nodo* T)
{
if (T!=NULL)
{
in_ordem (T->Esq);
printf("Item: %d",T->Reg.chave);
in_ordem (T->Dir);
}
}
void in_ordem (Nodo* T)
{
if (T!=NULL)
{
in_ordem (T->Esq);
printf("Item: %d",T->Reg.chave);
in_ordem (T->Dir);
}
}
void pre_ordem (Nodo* T)
{
if (T!=NULL)
{
printf("Item: %d",T->Reg.chave);
pre_ordem (T->Esq);
pre_ordem (T->Dir);
}
}
void pre_ordem (Nodo* T)
{
if (T!=NULL)
{
printf("Item: %d",T->Reg.chave);
pre_ordem (T->Esq);
pre_ordem (T->Dir);
}
}
![Page 20: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/20.jpg)
Pro
f. Yandre
Mald
onado - 2
0
Árvores Binárias
void pos_ordem (Nodo* T)
{
if (T!=NULL)
{
pos_ordem (T->Esq);
pos_ordem (T->Dir);
printf("Item: %d",T->Reg.chave);
}
}
void pos_ordem (Nodo* T)
{
if (T!=NULL)
{
pos_ordem (T->Esq);
pos_ordem (T->Dir);
printf("Item: %d",T->Reg.chave);
}
}
![Page 21: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/21.jpg)
Pro
f. Yandre
Mald
onado - 2
1
Exercício
Escreva uma função que calcule o número de nós de uma árvore binária.
Escreva uma função que imprima (seguindo a travessia in-ordem) o conteúdo das folhas de uma árvore binária.
![Page 22: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/22.jpg)
Pro
f. Yandre
Mald
onado - 2
2
Árvores Binárias de Busca
Árvore Binária de Busca ou Árvore de Pesquisa:
Uma ABB para um subconjunto S é uma árvore binária com rótulos no qual cada vértice v está rotulado com elementos e(v) S |:1. Para cada vértice na subárvore Esq de v
e() < e(v);2. Para cada vértice na subárvore Dir de v
e() > e(v);3. Para cada elemento a S, existe exatamente
um vértice v | e(a)=v.
![Page 23: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/23.jpg)
Pro
f. Yandre
Mald
onado - 2
3
Árvores Binárias de Busca
Em resumo, uma árvore binária de pesquisa é uma árvore binária onde cada nó interno possui um registro, tal que:todo registro alocado na sua
subárvore esquerda é menor do que o nó pai;
e todo registro alocado na subárvore direita é maior do que o nó pai.
![Page 24: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/24.jpg)
Pro
f. Yandre
Mald
onado - 2
4
Árvores Binárias de Busca
Exemplo:
5
82
11| |9| |
4 |1| | 106|
3| | 7| |
![Page 25: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/25.jpg)
Pro
f. Yandre
Mald
onado - 2
5
Árvores Binárias de Busca A estrutura de dados
para esta árvore poderia ser dada por:
typedef struct
{
int chave;
//Outros Campos
} Registro;
struct Nodo
{
Registro Reg;
Nodo* Dir;
Nodo* Esq;
};
typedef struct
{
int chave;
//Outros Campos
} Registro;
struct Nodo
{
Registro Reg;
Nodo* Dir;
Nodo* Esq;
};
![Page 26: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/26.jpg)
Pro
f. Yandre
Mald
onado - 2
6
Árvores Binárias de Busca
Operações básicas para uma árvore binária de busca: Inicialização, inserção, remoção (e
balanceamento); Para isto, é preciso utilizar os processos
recursivos de busca da árvore; Procura-se um elemento Y na raiz, se ele não for
encontrado deve-se procurá-lo na subárvore esquerda caso ele seja menor que a raiz, ou na subárvore direita se ele for maior que a raiz;
Nas operações de alteração, remoção e consulta a busca deve ter sucesso, nas operações de inserção a busca deve fracassar;
![Page 27: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/27.jpg)
Pro
f. Yandre
Mald
onado - 2
7
void insere_elemento (Nodo* T, Registro X) { if (T==NULL) { T=(Nodo*)malloc(sizeof(Nodo)); T->Reg=X; T->Esq=NULL; T->Dir=NULL; } else if (X.chave<T->Reg.chave) insere_elemento (T->Esq, X); else if (X.chave>T->Reg.chave) insere_elemento (T->Dir, X); else T->Reg=X; //Substitui }
void insere_elemento (Nodo* T, Registro X) { if (T==NULL) { T=(Nodo*)malloc(sizeof(Nodo)); T->Reg=X; T->Esq=NULL; T->Dir=NULL; } else if (X.chave<T->Reg.chave) insere_elemento (T->Esq, X); else if (X.chave>T->Reg.chave) insere_elemento (T->Dir, X); else T->Reg=X; //Substitui }
void inicializa_arvore (Nodo* T) { T=NULL; }
void inicializa_arvore (Nodo* T) { T=NULL; }
Árvores Binárias de Busca
![Page 28: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/28.jpg)
Pro
f. Yandre
Mald
onado - 2
8
Árvores Binárias de Busca
Remoção
“Para se criar esta função deve-se fazer uma análise. Pois, se o elemento a ser removido tiver apenas um descendente, a remoção será simples. Mas se o elemento a ser removido
tiver dois descendentes, ele deverá ser substituído por aquele que estiver mais a direita em sua subárvore esquerda
(maior dos menores); ou por aquele que estiver mais a esquerda em sua subárvore direita (menor dos maiores).”
![Page 29: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/29.jpg)
Pro
f. Yandre
Mald
onado - 2
9
Árvores Binárias de Busca
Exemplo: na árvore do slide 24, se removêssemos o nó com chave 5, poderíamos substituí-lo pelo nó com chave 4 (como mostra a figura abaixo), ou pelo nó com chave 6.
4
82
11| |9| |
3| |1| | 106|
7| |
![Page 30: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/30.jpg)
Pro
f. Yandre
Mald
onado - 3
0
Registro Maior (Nodo* Q) { while (Q->Dir != NULL) Q=Q->Dir; return(Q->Reg); }...
Registro Maior (Nodo* Q) { while (Q->Dir != NULL) Q=Q->Dir; return(Q->Reg); }...
Árvores Binárias de BuscaNeste algoritmo foi utilizado o sucessor a esquerda, ou seja, o maior dos menores.
void Remove_elemento (Nodo* T, Registro X) { Nodo* A;
if (T==NULL) printf ("Elemento nao encontrado na arvore."); else if (X.chave<T->Reg.chave) Remove_elemento (T->Esq, X); else if (X.chave>T->Reg.chave) Remove_elemento (T->Dir, X); else
if (T->Dir==NULL) { A=T; T=T->Esq; free(A); }elseif (T->Esq==NULL) { A=T; T=T->Dir; free(A); }else { T->Reg=Maior(T->Esq); Remove_elemento (T->Esq,T->Reg); }
}
void Remove_elemento (Nodo* T, Registro X) { Nodo* A;
if (T==NULL) printf ("Elemento nao encontrado na arvore."); else if (X.chave<T->Reg.chave) Remove_elemento (T->Esq, X); else if (X.chave>T->Reg.chave) Remove_elemento (T->Dir, X); else
if (T->Dir==NULL) { A=T; T=T->Esq; free(A); }elseif (T->Esq==NULL) { A=T; T=T->Dir; free(A); }else { T->Reg=Maior(T->Esq); Remove_elemento (T->Esq,T->Reg); }
}
![Page 31: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/31.jpg)
Pro
f. Yandre
Mald
onado - 3
1
Ordem de complexidade da árvore binária:
500 ||350 ||270 ||250 ||200 ||130 ||110 ||80 ||
100 150 260 400
120 300
220
4 consultas – 15 chaves
3 consultas – 7 chaves
2 consultas – 3 chaves
1 consulta – 1 chave
A Árvore Binária tem complexidade igual a pesquisa binária:-Melhor caso: 1 consulta;-Média: log2
n;
-Pior caso: log2n+1.
Onde n é o número de elementos armazenados na árvore.
Árvores Binárias de Busca
Capacidade = 2N-1Sendo N o número de níveis da árvore
![Page 32: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/32.jpg)
Pro
f. Yandre
Mald
onado - 3
2
Árvores Binárias de Busca
Balanceamento:Busca uma distribuição equilibrada
dos nós;Busca otimizar a consulta;Busca minimizar o número médio de
comparações necessário para a localização de uma chave.
![Page 33: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/33.jpg)
Pro
f. Yandre
Mald
onado - 3
3
Árvores Binárias de Busca
Balanceamento por altura: Busca-se minimizar a altura da árvore;
Árvore Completamente Balanceada: Uma árvore é completamente balanceada
quando a distância média dos nós até a raiz for mínima;
Uma árvore binária é dita completamente balanceada se, para cada nó, o número de nós de suas subárvores diferem de no máximo, 1;
Árvore completamente balanceada é a árvore com menor altura para o seu número de nós.
![Page 34: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/34.jpg)
Pro
f. Yandre
Mald
onado - 3
4
Árvore AVL
Árvores não completamente balanceadas: Uma árvore balanceada é uma árvore onde a
diferença de altura de qualquer subárvore é no máximo 1;
O grande esforço exigido para a manutenção de uma árvore completamente balanceada pode não ser compensado pelo ganho de eficiência no processo de busca;
Árvore não completamente balanceadas beneficiam o processo de busca, exigindo manutenção do balanceamento pouco onerosa.
![Page 35: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/35.jpg)
Pro
f. Yandre
Mald
onado - 3
5
Árvore AVL Exemplo de árvore não completamente
balanceada:
140 ||
350 ||270 ||250 ||200 ||130|110 ||80 ||
100 150 260 400 |
120 300
220
Neste contexto, destacam-se as árvores AVL, concebidas em 1962, por Adel’son-Vel’skii e Landis, caracterizadas pela seguinte propriedade: para todo nó de uma árvore AVL, a diferença entre as alturas de suas subárvores não excede a uma unidade.
![Page 36: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/36.jpg)
Pro
f. Yandre
Mald
onado - 3
6
Árvore AVL
110 ||
200 ||120 ||80 ||
100 150
130
150 ||
200 ||110 ||80 ||
100 130
120
Árvore AVL Árvore não AVL
As constantes inserções e remoções de nós de uma árvore podem provocar o desbalanceamento da mesma. Para corrigir este problema em uma árvore AVL, é necessária a aplicação de uma das quatro rotações que serão vistas a seguir.
![Page 37: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/37.jpg)
Pro
f. Yandre
Mald
onado - 3
7
Árvore AVL
Rotação Direita:
p
uc
a b
h
hhh+1
h+2
RotaçãoDireita
u
p
c
a
b hh
h
- u<b<p- u passa a ser a raiz-b é pendurada à esquerda de p- h0
![Page 38: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/38.jpg)
Pro
f. Yandre
Mald
onado - 3
8
Exemplo de Rotação Direita:
120
110 150
130 200100
80
RotaçãoDireita
120
100 150
130 20080 110
Árvore AVL
![Page 39: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/39.jpg)
Pro
f. Yandre
Mald
onado - 3
9
Rotação Esquerda:
p
za
cb
h
h hh+1
h+2
RotaçãoEsquerda
z
p
a
c
bh h
h
- p<b<z- z passa a ser a raiz-b é pendurada à direita de p- h0
Árvore AVL
![Page 40: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/40.jpg)
Pro
f. Yandre
Mald
onado - 4
0
Exemplo de Rotação Esquerda:
RotaçãoEsquerda
120
100 150
130 20080 110
120
130100
11080150
200
Árvore AVL
![Page 41: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/41.jpg)
Pro
f. Yandre
Mald
onado - 4
1
Rotação Dupla Direita:
RotaçãoDupla Direita
- b<v<c- u<v<p- v passa a ser a raiz-h0
p
v
d
b c
h
hh
u
ah
ou
v
p
da c h
u
b
ou
Árvore AVL
h+2
![Page 42: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/42.jpg)
Pro
f. Yandre
Mald
onado - 4
2
Exemplo de Rotação Dupla Direita:
120
100 150
130 20080 110
RotaçãoDupla Direita
120
110 150
130 20080
100
Árvore AVL
![Page 43: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/43.jpg)
Pro
f. Yandre
Mald
onado - 4
3
Rotação Dupla Esquerda:
RotaçãoDupla Esquerda
- b<y<c- p<y<z- y passa a ser a raiz-h0
y
z
da c h
p
b
ou
Árvore AVL
p
y
a
cb
h
h h
z
d h
ou
h+2
![Page 44: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/44.jpg)
Pro
f. Yandre
Mald
onado - 4
4
Exemplo de Rotação Dupla Esquerda:
120
100 150
130 20080 110
120
100 130
150
20080 110
RotaçãoDupla Esquerda
Árvore AVL
![Page 45: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/45.jpg)
Pro
f. Yandre
Mald
onado - 4
5
Identificação do caso a ser aplicado: Supondo que o nó q foi incluído na árvore T, se
houver desbalanceamento da árvore, sendo p o nó raíz do desbalanceamento mais próximo das folhas de T:
• |he(p) – hd(p)| = 2he: altura da subárvore esquerdahd: altura da subárvore direita• Caso 1: he(p)>hd(p)
Sendo u o filho à esquerda de p:1.1. he(u)>hd(u) rotação direita1.2. hd(u)>he(u) rotação dupla direita
• Caso 2: hd(p)>he(p)Sendo z o filho à direita de p:2.1. hd(z)>he(z) rotação esquerda2.2. he(z)>hd(z) rotação dupla esquerda
Árvore AVL
![Page 46: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/46.jpg)
Pro
f. Yandre
Mald
onado - 4
6
Árvore AVL
Exemplo de “crescimento” de uma árvore AVL (com balanceamento): Suponhamos a inserção das chaves na
seguinte seqüência: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
50
50
30Pilha
50
Pilha
30
50
Pilha
50
30
20
![Page 47: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/47.jpg)
Pro
f. Yandre
Mald
onado - 4
7
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
50
30
20
30
50
Pilha
50
Pilha
![Page 48: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/48.jpg)
Pro
f. Yandre
Mald
onado - 4
8
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
30
20 50
30
20 50
15
20
30
Pilha
![Page 49: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/49.jpg)
Pro
f. Yandre
Mald
onado - 4
9
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
30
20 50
15
10
15
20
30
Pilha
20
30
Pilha
![Page 50: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/50.jpg)
Pro
f. Yandre
Mald
onado - 5
0
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
30
15 50
10 20
30
15 50
10 20
12
10
15
30
Pilha
![Page 51: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/51.jpg)
Pro
f. Yandre
Mald
onado - 5
1
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
30
15 50
10 20
12
10
15
30
Pilha
15
30
Pilha
30
Pilha
![Page 52: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/52.jpg)
Pro
f. Yandre
Mald
onado - 5
2
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
30
15
50
10
2012
30
15 50
10 20
12
![Page 53: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/53.jpg)
Pro
f. Yandre
Mald
onado - 5
3
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
30
15
50
10
2012
18
20
30
15
Pilha
30
15
Pilha
15
Pilha
![Page 54: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/54.jpg)
Pro
f. Yandre
Mald
onado - 5
4
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
30
15
50
10
2012
18
17
18
20
30
15
Pilha
20
30
15
Pilha
![Page 55: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/55.jpg)
Pro
f. Yandre
Mald
onado - 5
5
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
30
15
50
10
2012
18
17
30
15
50
10
1812
2017
![Page 56: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/56.jpg)
Pro
f. Yandre
Mald
onado - 5
6
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
20
18
30
15
Pilha
18
30
15
Pilha
30
15
Pilha
15
50
10
12
2017
25
18
30
![Page 57: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/57.jpg)
Pro
f. Yandre
Mald
onado - 5
7
Árvore AVL
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
30
15
50
10
12
2017
25
18
15
10
12
17
20
30
25 50
18
![Page 58: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/58.jpg)
Pro
f. Yandre
Mald
onado - 5
8
Árvore AVL
15
10
12
17
20
30
25 50
18
24
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
25
30
20
15
Pilha
30
20
15
Pilha
20
15
Pilha
15
Pilha
![Page 59: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/59.jpg)
Pro
f. Yandre
Mald
onado - 5
9
Árvore AVL
15
10
12
17
20
30
25 50
18
24
15
10
12 17
20
30
25 5018
24
Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.
![Page 60: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/60.jpg)
Pro
f. Yandre
Mald
onado - 6
0
Exercício:Dada a seguinte seqüência de chaves
numéricas a serem inseridas em uma árvores AVL, mostre a seqüência de árvores AVL produzidas após a inserção de cada uma destas chaves:
• 50, 40, 45, 70, 80, 60, 90, 85, 82, 55, 75.
Árvore AVL
![Page 61: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/61.jpg)
Pro
f. Yandre
Mald
onado - 6
1
ExercícioDada a seguinte árvores AVL, mostre
a seqüência de árvores produzidas após a remoção de cada chave da seguinte seqüência:
• 50, 60, 55.
Árvore AVL
![Page 62: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/62.jpg)
Pro
f. Yandre
Mald
onado - 6
2
Árvore AVL
Exclusão do 50:
![Page 63: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/63.jpg)
Pro
f. Yandre
Mald
onado - 6
3
Árvore AVL
Exclusão do 60:
![Page 64: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/64.jpg)
Pro
f. Yandre
Mald
onado - 6
4
Árvore AVL
Exclusão do 55:
![Page 65: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/65.jpg)
Pro
f. Yandre
Mald
onado - 6
5
Árvore AVL – Algoritmos de Rotação
Nodo* rot_dir(Nodo* N3){
Nodo *N2;
N2 = N3-> esq;if (N2->dir != NULL)
N3->esq = N2->dir;else
N3->esq = NULL;N2->dir = N3;return N2;
}
Nodo* rot_dir(Nodo* N3){
Nodo *N2;
N2 = N3-> esq;if (N2->dir != NULL)
N3->esq = N2->dir;else
N3->esq = NULL;N2->dir = N3;return N2;
}
Nodo* rot_esq(Nodo* N3){
Nodo *N2;
N2 = N3-> dir;if (N2->esq != NULL)
N3->dir = N2->esq;else
N3->dir = NULL;N2->esq = N3;return N2;
}
Nodo* rot_esq(Nodo* N3){
Nodo *N2;
N2 = N3-> dir;if (N2->esq != NULL)
N3->dir = N2->esq;else
N3->dir = NULL;N2->esq = N3;return N2;
}
Nodo* rot_dupla_dir(Nodo* N3){
Nodo *N1= N3->esq;Nodo *N2= N1->dir;
if (N2->esq != NULL) N1->dir = N2->esq;
elseN1->dir = NULL;
if (N2->dir != NULL) N3->esq = N2->dir;
elseN3->esq = NULL;
N2->esq = N1;N2->dir = N3;return N2;
}
Nodo* rot_dupla_dir(Nodo* N3){
Nodo *N1= N3->esq;Nodo *N2= N1->dir;
if (N2->esq != NULL) N1->dir = N2->esq;
elseN1->dir = NULL;
if (N2->dir != NULL) N3->esq = N2->dir;
elseN3->esq = NULL;
N2->esq = N1;N2->dir = N3;return N2;
}
Nodo* rot_dupla_esq(Nodo* N3){
Nodo *N1= N3->dir;Nodo *N2= N1->esq;
if (N2->dir != NULL) N1->esq = N2->dir;
elseN1->esq = NULL;
if (N2->esq != NULL) N3->dir = N2->esq;
elseN3->dir = NULL;
N2->dir = N1;N2->esq = N3;return N2;
}
Nodo* rot_dupla_esq(Nodo* N3){
Nodo *N1= N3->dir;Nodo *N2= N1->esq;
if (N2->dir != NULL) N1->esq = N2->dir;
elseN1->esq = NULL;
if (N2->esq != NULL) N3->dir = N2->esq;
elseN3->dir = NULL;
N2->dir = N1;N2->esq = N3;return N2;
}
![Page 66: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/66.jpg)
Pro
f. Yandre
Mald
onado - 6
6
![Page 67: ÁRVORES - UEMfuber/estr_dados/ArvoreAVL.pdf · 2019-10-29 · P r o f. Y a n d r e M a l d o n a d o-4 Árvores Terminologia: No exemplo anterior, os quadrados representam os nós](https://reader035.vdocuments.com.br/reader035/viewer/2022063006/5fb55696a8308b4576761339/html5/thumbnails/67.jpg)
Pro
f. Yandre
Mald
onado - 6
7
Bibliografia
Azeredo, Paulo. Notas de aula de Algoritmos e Estruturas de Dados. INF/UFRGS, 2000;
Celes, Waldemar et al. Introdução a Estruturas de Dados. Editora Campus, 2004;
Wirth, Niklaus. Algoritmos e Estruturas de Dados. Editora PHB;
Ziviani, Nivio. Projeto de Algoritmos. Editora Pioneira.