200 likes | 283 Views
UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof.: Paulemir G. Campos. Pesquisas de Dados (Parte 2). Conteúdo. Árvores AVL Definição; Exemplo e contra-exemplo; Balanceamento; Exemplo de rotação dupla. Referências. Árvores AVL. Árvores AVL: Definição.
E N D
UPE – Caruaru – Sistemas de InformaçãoDisciplina: Estrutura de Dados e ArquivoProf.: Paulemir G. Campos Pesquisas de Dados (Parte 2) EDA - Prof. Paulemir Campos
Conteúdo • Árvores AVL • Definição; • Exemplo e contra-exemplo; • Balanceamento; • Exemplo de rotação dupla. • Referências EDA - Prof. Paulemir Campos
Árvores AVL EDA - Prof. Paulemir Campos
Árvores AVL: Definição • Árvore criada por Adelson-Velskii e Landis, daí o nome Árvore AVL; • É uma árvore de pesquisa binária balanceada cujo módulo da diferença entre as alturas das sub-árvores esquerda e direita de cada nó nunca é maior do que 1. EDA - Prof. Paulemir Campos
Árvores AVL: Definição • Em outras palavras, o valor do balanceamento de cada nó de uma árvore AVL é igual a 1, 0 ou –1. • Caso contrário, a árvore binária não é AVL, pois estará desbalanceada. EDA - Prof. Paulemir Campos
Árvores AVL: Exemplo -1 1 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 EDA - Prof. Paulemir Campos
Árvores AVL: Contra-exemplo • Exemplo de Árvore não-AVL -1 1 0 0 0 1 -2 0 0 0 0 0 0 0 0 0 EDA - Prof. Paulemir Campos
Árvores AVL: Balanceamento • Balanceamento de Árvore Binária por Rotação Esquerda: ponteiro tArvore GiraEsquerda (ponteiro tArvore raiz) { ponteiro tArvore novaRaiz novaRaiz = raiz->direito raiz->direito = novaRaiz->esquerdo novaRaiz->esquerdo = raiz retorna novaRaiz } EDA - Prof. Paulemir Campos
Árvores AVL: Balanceamento • Exemplo de balanceamento por rotação esquerda. A C 1 -2 B C A E 0 -1 -1 0 D E B D G 1 -1 0 0 0 F G F 0 0 0 EDA - Prof. Paulemir Campos
Árvores AVL: Balanceamento • Balanceamento de Árvore Binária por Rotação Direita: ponteiro tArvore GiraDireita (ponteiro tArvore raiz) { ponteiro tArvore novaRaiz novaRaiz = raiz->esquerdo raiz->esquerdo = novaRaiz->direito novaRaiz->direito = raiz retorna novaRaiz } EDA - Prof. Paulemir Campos
Árvores AVL: Balanceamento • Exemplo de balanceamento por rotação direita. A B 2 -1 B C D A 0 0 1 1 D E F E C 1 -1 -1 0 0 F G G 0 0 0 EDA - Prof. Paulemir Campos
Árvores AVL: Balanceamento • Características: • Quando se efetua uma rotação esquerda ou direita numa árvore de pesquisa binária, a ordem dos elementos percorrendo-a em ordem central não se altera. • Isto é, a árvore de pesquisa binária continua ordenada. EDA - Prof. Paulemir Campos
Árvores AVL: Balanceamento • Características: • Árvore desbalanceada com valor negativo pode ser balanceada com rotação esquerda; • Árvore desbalanceada com valor positivo pode ser balanceada com rotação direita. EDA - Prof. Paulemir Campos
Árvores AVL: Balanceamento • Descrição das rotações nos seguintes casos: EDA - Prof. Paulemir Campos
Árvores AVL: Balanceamento Exemplo de Rotação Dupla • Dada a árvore de pesquisa binária ao lado, pede-se para balanceá-la aplicando operações de rotação à esquerda e/ou à direita conforme necessário. 20 15 25 12 19 18 EDA - Prof. Paulemir Campos
Árvores AVL: Balanceamento Exemplo de Rotação Dupla • Primeiro aplica-se uma rotação à esquerda no nó 15 da árvore desbalanceada inicial. 20 20 2 2 15 25 19 25 -1 0 0 2 12 19 15 0 1 0 12 18 18 0 0 0 EDA - Prof. Paulemir Campos
Árvores AVL: Balanceamento Exemplo de Rotação Dupla • Depois, basta aplicar uma rotação à direita no nó 20 da árvore obtida no passo anterior. 20 19 2 0 19 25 15 20 0 0 -1 2 15 18 25 12 0 0 0 0 12 18 0 0 EDA - Prof. Paulemir Campos
Referências EDA - Prof. Paulemir Campos
Referências • ASCENCIO, A. F. G; ARAÚJO, G. S. Estruturas de Dados: algoritmos, análise da complexidade e implementações em JAVA e C/C++. São Paulo: Pearson Prentice Hall, 2010. EDA - Prof. Paulemir Campos
Referências • SZWARCFITER, J. L.; MARKENZON, L. Estruturas de Dados e seus Algoritmos. 2. ed. Rio de Janeiro: LTC, 1994. EDA - Prof. Paulemir Campos