Árvores AVL. Nesta aula será apresentado o ADT árvore AVL que são árvores binárias de altura equilibrada. Algoritmos e Estruturas de Dados I

Tamanho: px
Começar a partir da página:

Download "Árvores AVL. Nesta aula será apresentado o ADT árvore AVL que são árvores binárias de altura equilibrada. Algoritmos e Estruturas de Dados I"

Transcrição

1 Árvores AVL Nesta aula será apresentado o ADT árvore AVL que são árvores binárias de altura equilibrada Algoritmos e Estruturas de Dados I José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP augusto@usp.br

2 Introdução Árvores de altura balanceada ou de altura equilibrada foram introduzidas em 1962 por Adelson-Velskii e Landis, também conhecidas como árvores AVL Devido ao balanceamento da árvore, as operações de busca, inserção e remoção em uma árvore com n elementos podem ser efetuadas em O(log 2 n), mesmo no pior caso Um teorema provado por Adelson-Velskii e Landis garante que a árvore balanceada nunca será 45% mais alta que a correspondente árvore perfeitamente balanceada, independentemente do número de nós existentes

3 Árvore AVL Uma árvore AVL é definida como: Uma árvore vazia é uma árvore AVL Sendo T uma árvore binária de busca cujas subárvores esquerda e direita são L e R, respectivamente, T será uma árvore AVL contanto que: L e R são árvores AVL h L h R 1, onde h L e h R são as alturas das subárvores L e R, respectivamente A definição de uma árvore binária de altura equilibrada (AVL) requer que cada subárvore seja também de altura equilibrada

4 Fator de Balanceamento O fator de balanceamento ou fator de equilíbrio de um nó T em uma árvore binária é definido como sendo h L h R onde h L e h R são as alturas das subárvores esquerda e direita de T, respectivamente Para qualquer nó T numa árvore AVL, o fator de balanceamento assume o valor, ou O fator de balanceamento de uma folha é zero

5 Fator de Balanceamento

6 Fator de Balanceamento Fator= indica que as alturas das subárvores esquerda e direita são iguais

7 Fator de Balanceamento Fator= indica que a altura da subárvore esquerda é maior que da direita

8 Fator de Balanceamento Fator= 1 indica que a altura da subárvore esquerda é menor que da direita

9 Inserção Maio Depois da inserção Maio Depois do rebalanceamento Sem necessidade de rebalanceamento

10 Inserção Março Depois da inserção Depois do rebalanceamento Maio Sem necessidade de rebalanceamento Março

11 Inserção Novembro Depois da inserção Depois do rebalanceamento -2 Maio Março RR A = -2 B = Maio Março Novembro Novembro

12 Inserção Agosto Depois da inserção Depois do rebalanceamento Março Sem necessidade de rebalanceamento Maio Novembro Agosto

13 Inserção Abril Depois da inserção Depois do rebalanceamento +2 Março LL A = +2 B = Março +2 Maio Novembro Agosto Novembro Agosto Abril Maio Abril

14 Inserção Janeiro Depois da inserção Depois do rebalanceamento +2 Março LR A = +2 B = Maio Agosto Novembro Agosto Março Abril Maio Abril Janeiro Novembro Janeiro

15 Inserção Dezembro Depois da inserção Depois do rebalanceamento Maio Sem necessidade de rebalanceamento Agosto Março Abril Janeiro Novembro Dezembro

16 Inserção Julho Depois da inserção Depois do rebalanceamento Maio Sem necessidade de rebalanceamento Agosto Março Abril Janeiro Novembro Dezembro Julho

17 Inserção Fevereiro Depois da inserção Depois do rebalanceamento +2 Maio RL A = -2 B = Maio -2 Agosto Março Dezembro Março Abril Janeiro Novembro Agosto Janeiro Novembro Dezembro Julho Abril Fevereiro Julho Fevereiro

18 Inserção Junho Depois da inserção Depois do rebalanceamento Dez +2 Maio Mar LR A = +2 B = Dez Jan Maio Ago Jan Nov Ago Fev Julho Mar Abril Fev Julho Abril Junho Nov Junho

19 Inserção Outubro Depois da inserção Depois do rebalanceamento Dez Jan Maio RR A = -2 B = Dez Jan Maio Ago Fev Julho -2 Mar Ago Fev Julho Nov Abril Junho Nov Abril Junho Mar Out Out

20 Inserção Setembro Depois da inserção Jan Depois do rebalanceamento Sem necessidade de rebalanceamento Dez Maio Ago Fev Julho Nov Abril Junho Mar Out Set

21 Rotações O processo de rebalanceamento é conduzido utilizando 4 tipos de rotações: LL, RR, LR, RL LL e RR são simétricas entre si assim como LR e RL As rotações são caracterizadas pelo ancestral mais próximo A do novo nó inserido Y cujo fator de balanceamento passa a ser +2 ou -2 LL: Y inserido na subárvore esquerda da subárvore esquerda de A LR: Y inserido na subárvore direita da subárvore esquerda de A RR: Y inserido na subárvore direita da subárvore direita de A RL: Y inserido na subárvore esquerda da subárvore direita de A Seja B o filho de A no qual ocorreu a inserção de Y LL (A = +2; B = ) RR (A = -2; B = ) LR (A = +2; B = ) RL (A = -2; B = ) C é o filho de B no qual ocorreu a inserção de Y

22 Rotação LL Subárvore balanceada A Subárvore desbalanceada após inserção +2 A B h+2 B h+2 h h A R A R B L B R B L B R Subárvore rebalanceada B Altura de B L aumenta para h A h+2 h B L B R A R

23 Rotação LL pa A Assumindo pa e pb ponteiros para as subárvores com raízes A e B: pb = pa->leftnode; pa->leftnode = pb->rightnode; pb->rightnode = pa; pa = pb; B A R B L B R

24 Rotação LL pb pa A Assumindo pa e pb ponteiros para as subárvores com raízes A e B: pb = pa->leftnode; pa->leftnode = pb->rightnode; pb->rightnode = pa; pa = pb; B A R B L B R

25 Rotação LL pb pa Assumindo pa e pb ponteiros para as subárvores com raízes A e B: pb = pa->leftnode; pa->leftnode = pb->rightnode; pb->rightnode = pa; pa = pb; B A B L B R A R

26 Rotação LL pb B pa Assumindo pa e pb ponteiros para as subárvores com raízes A e B: pb = pa->leftnode; pa->leftnode = pb->rightnode; pb->rightnode = pa; pa = pb; A B L BR A R

27 Rotação LL pb B pa Assumindo pa e pb ponteiros para as subárvores com raízes A e B: pb = pa->leftnode; pa->leftnode = pb->rightnode; pb->rightnode = pa; pa = pb; A B L BR A R

28 Rotação RR Subárvore balanceada A Subárvore desbalanceada após inserção -2 A B h+2 B h+2 h h A L A L B L B R B L B R Subárvore rebalanceada B Altura de B R aumenta para h A h+2 h B R A L B L

29 Rotação RR A pa Assumindo pa e pb ponteiros para as subárvores com raízes A e B: pb = pa->rightnode; pa->rightnode = pb->leftnode; pb->leftnode = pa; pa = pb; B A L B L B R

30 Rotação RR A pa pb Assumindo pa e pb ponteiros para as subárvores com raízes A e B: pb = pa->rightnode; pa->rightnode = pb->leftnode; pb->leftnode = pa; pa = pb; B A L B L B R

31 Rotação RR pa pb Assumindo pa e pb ponteiros para as subárvores com raízes A e B: pb = pa->rightnode; pa->rightnode = pb->leftnode; pb->leftnode = pa; pa = pb; A B A L B L B R

32 Rotação RR pa B pb Assumindo pa e pb ponteiros para as subárvores com raízes A e B: pb = pa->rightnode; pa->rightnode = pb->leftnode; pb->leftnode = pa; pa = pb; A B R A L B L

33 Rotação RR pa B pb Assumindo pa e pb ponteiros para as subárvores com raízes A e B: pb = pa->rightnode; pa->rightnode = pb->leftnode; pb->leftnode = pa; pa = pb; A B R A L B L

34 Rotação LR(a) Subárvore balanceada A Subárvore desbalanceada após inserção +2 A B B C Subárvore rebalanceada C B A

35 Rotação LR(b) Subárvore balanceada A Subárvore desbalanceada após inserção +2 A h B L B C L C CR h A R h h+2 h B L B C L C CR A R h h+2 Subárvore rebalanceada C B A h+2 h B L C L C R A R

36 Rotação LR(c) Subárvore balanceada A Subárvore desbalanceada após inserção +2 A h B L B C L C CR h A R h h+2 h B L B C L C CR A R h h+2 Subárvore rebalanceada C B A h+2 h B L C L C R A R

37 Rotação LR B pa C A Assumindo pa, pb e pc ponteiros para as subárvores com raízes A, B e C: pb = pa->leftnode; pc = pb->rightnode; pb->rightnode = pc->leftnode; pc->leftnode = pb; pa->leftnode = pc->rightnode; pc->rightnode = pa; pa = pc; A R B L C L C R

38 Rotação LR pb B pa C A Assumindo pa, pb e pc ponteiros para as subárvores com raízes A, B e C: pb = pa->leftnode; pc = pb->rightnode; pb->rightnode = pc->leftnode; pc->leftnode = pb; pa->leftnode = pc->rightnode; pc->rightnode = pa; pa = pc; A R B L C L C R

39 Rotação LR pb B pa C A pc Assumindo pa, pb e pc ponteiros para as subárvores com raízes A, B e C: pb = pa->leftnode; pc = pb->rightnode; pb->rightnode = pc->leftnode; pc->leftnode = pb; pa->leftnode = pc->rightnode; pc->rightnode = pa; pa = pc; A R B L C L C R

40 Rotação LR pb pa A Assumindo pa, pb e pc ponteiros para as subárvores com raízes A, B e C: pb = pa->leftnode; pc = pb->rightnode; pc pb->rightnode = pc->leftnode; pc->leftnode = pb; B pa->leftnode = pc->rightnode; C pc->rightnode = pa; pa = pc; A R B L C L C R

41 Rotação LR pb C pc pa A Assumindo pa, pb e pc ponteiros para as subárvores com raízes A, B e C: pb = pa->leftnode; pc = pb->rightnode; pb->rightnode = pc->leftnode; pc->leftnode = pb; B pa->leftnode = pc->rightnode; pc->rightnode = pa; pa = pc; A R B L C L C R

42 Rotação LR pc pb C pa Assumindo pa, pb e pc ponteiros para as subárvores com raízes A, B e C: pb = pa->leftnode; pc = pb->rightnode; pb->rightnode = pc->leftnode; B A pc->leftnode = pb; pa->leftnode = pc->rightnode; pc->rightnode = pa; pa = pc; B L C L C R A R

43 Rotação LR pc pb C pa Assumindo pa, pb e pc ponteiros para as subárvores com raízes A, B e C: pb = pa->leftnode; pc = pb->rightnode; pb->rightnode = pc->leftnode; B A pc->leftnode = pb; pa->leftnode = pc->rightnode; pc->rightnode = pa; pa = pc; B L C L C R A R

44 Rotação LR pb C pc pa Assumindo pa, pb e pc ponteiros para as subárvores com raízes A, B e C: pb = pa->leftnode; pc = pb->rightnode; pb->rightnode = pc->leftnode; B A pc->leftnode = pb; pa->leftnode = pc->rightnode; pc->rightnode = pa; pa = pc; B L C L C R A R

45 Rotação RL(a) Subárvore balanceada A Subárvore desbalanceada após inserção -2 A B B C Subárvore rebalanceada C A B

46 Rotação RL(b) Subárvore balanceada A Subárvore desbalanceada após inserção -2 A h+2 h A L h CL C C R B B R h h+2 h A L CL C C R B B R h Subárvore rebalanceada C A B h+2 A L C L C R B R h

47 Rotação RL(c) Subárvore balanceada A Subárvore desbalanceada após inserção -2 A h+2 h A L h CL C C R B B R h h+2 h A L CL C C R B B R h Subárvore rebalanceada C A B h+2 A L C L C R B R h

48 Inserções Inserir x=7 4 5

49 Inserções Inserido x=7 A inserção produz uma árvore desbalanceada

50 Inserções Inserido x=7 A inserção produz uma árvore desbalanceada, cujo balanceamento envolve uma rotação RR 4 5 7

51 Inserções Inserir x=

52 Inserções Inserido x=

53 Inserções Inserido x=2 Inserir x=

54 Inserções Inserido x=2 Inserido x=1 Ocorre desbalanceamento da subárvore de raiz

55 Inserções Inserido x=2 Inserido x=1 Ocorre desbalanceamento da subárvore de raiz 4, que é corrigido por uma rotação LL

56 Inserções Inserir x=

57 Inserções Inserido x=3 Ocorre desbalanceamento da subárvore de raiz

58 Inserções Inserido x=3 Ocorre desbalanceamento da subárvore de raiz 5, que é corrigido por uma rotação LR

59 Inserções Inserir x=

60 Inserções Inserido x=6 Ocorre desbalanceamento da subárvore de raiz

61 Inserções Inserido x=6 Ocorre desbalanceamento da subárvore de raiz 5, que é corrigido por uma rotação RL

62 Representação Vamos representar um nó AVL de forma similar a um nó em uma árvore binária de busca, contendo um campo adicional bal para manter o fator de balanceamento do nó: struct TreeNode { int Entry; // chave int count; // contador int bal; //,, TreeNode *LeftNode, *RightNode; //subárvores }; typedef TreeNode *TreePointer;

63 Busca com Inserção Para realizar as operações necessárias em cada nó isolado é descrito a seguir um algoritmo recursivo Por ser recursivo, é simples a incorporação de uma operação adicional a ser executada no caminho de volta ao longo do trajeto de busca A cada passo é necessário descobrir e informar se a altura da subárvore em que foi feita a inserção cresceu ou não Para tanto, foi incluído um parâmetro booleano h, passado por referência (com valor inicial false), que indica que a subárvore cresceu em altura O algoritmo de inserção deve ser chamado com o ponteiro pa como sendo a raiz da árvore (root)

64 Busca com Inserção Suponha que o algoritmo retorne, partindo da subárvore esquerda a um nó p com a indicação que houve um incremento em sua altura Existem três condições relacionadas com as alturas das subárvores antes da inserção h L < h R, p->bal == Após a inserção, o desbalanceamento em p foi equilibrado h L == h R, p->bal == Após a inserção, a altura da árvore é maior à esquerda h L > h R, p->bal == Após a inserção, é necessário fazer o rebalanceamento

65 Busca com Inserção Após uma rotação LL ou RR, os nós A e B passam a ter fator de balanceamento iguais a zero No caso de rotações LR ou RL Os fatores de balanceamento dos nós A e B podem ser recalculados com base no fator de balanceamento do nó C O novo fator de balanceamento do nó C passa a ser zero

66 Busca com Inserção void AVLTree::SearchInsert(int x, TreePointer &pa, bool &h) { TreePointer pb, pc; if(pa == NULL) // inserir { pa = new TreeNode; h = true; pa->entry = x; pa->count = 1; pa->leftnode = pa->rightnode = NULL; pa->bal = ; }

67 Busca com Inserção else if(x < pa->entry) { SearchInsert(x, pa->leftnode, h); if(h) // subárvore esquerda cresceu { switch (pa->bal) { case : pa->bal = ; h = false; break; case : pa->bal = ; break; case : pb = pa->leftnode; if(pb->bal == ) // rotação LL { pa->leftnode = pb->rightnode; pb->rightnode = pa; pa->bal = ; pa = pb; } else // rotação LR { pc = pb->rightnode; pb->rightnode = pc->leftnode; pc->leftnode = pb; pa->leftnode = pc->rightnode; pc->rightnode = pa; if(pc->bal == ) pa->bal = ; else pa->bal = ; if(pc->bal == ) pb->bal = ; else pb->bal = ; pa = pc; } pa->bal = ; h = false; } // switch } }

68 Busca com Inserção else if(x > pa->entry) { SearchInsert(x, pa->rightnode, h); if(h) // subárvore direita cresceu { switch (pa->bal) { case : pa->bal = ; h = false; break; case : pa->bal = ; break; case : pb = pa->rightnode; if(pb->bal == ) // rotação RR { pa->rightnode = pb->leftnode; pb->leftnode = pa; pa->bal = ; pa = pb; } else // rotação RL { pc = pb->leftnode; pb->leftnode = pc->rightnode; pc->rightnode = pb; pa->rightnode = pc->leftnode; } } pc->leftnode = pa; if(pc->bal == ) pa->bal = ; else pa->bal = ; if(pc->bal == ) pb->bal = ; else pb->bal = ; pa = pc; } pa->bal = ; h = false; } // switch

69 Busca com Inserção } else // elemento encontrado pa->count++;

70 Remoção Antes da remoção Depois do rebalanceamento

71 Remoção Depois da remoção Depois do rebalanceamento 5 LL

72 Remoção Antes da remoção Depois do rebalanceamento Obs: foi utilizado o maior elemento da subárvore esquerda do nó sendo removido

73 Remoção Depois da remoção Depois do rebalanceamento 5 Sem necessidade de rebalanceamento Obs: foi utilizado o maior elemento da subárvore esquerda do nó sendo removido

74 Remoção Antes da remoção Depois do rebalanceamento

75 Remoção Depois da remoção Depois do rebalanceamento 5 RR

76 Remoção Antes da remoção Depois do rebalanceamento

77 Remoção Depois da remoção Depois do rebalanceamento 3 Sem necessidade de rebalanceamento

78 Remoção Antes da remoção Depois do rebalanceamento

79 Remoção Depois da remoção Depois do rebalanceamento -2 3 RL

80 Remoção Antes da remoção Depois do rebalanceamento

81 Remoção Depois da remoção Depois do rebalanceamento 7 Sem necessidade de rebalanceamento

82 Remoção Antes da remoção Depois do rebalanceamento

83 Remoção Depois da remoção Depois do rebalanceamento -2 3 RR

84 Remoção Antes da remoção Depois do rebalanceamento

85 Remoção Antes da remoção Depois do rebalanceamento +2 1 LR

86 Remoção A remoção em árvores AVL é similar à remoção em uma árvore binária de busca Todavia, é preciso verificar o balanceamento e, se necessário, aplicar algumas das rotações Nos algoritmos, foi acrescentado um parâmetro h, passado por referência (cujo valor inicial deve ser false) indicando que a altura da subárvore foi reduzida O método DelMin procura, na subárvore direita, pelo menor valor e só é chamando quando o nó com chave x possui as duas subárvores O rebalanceamento somente é efetuado se h é true O algoritmo de remoção deve ser chamado com o ponteiro p como sendo a raiz da árvore (root)

87 Remoção void AVLTree::Delete(int x, TreePointer &p, bool &h) { TreePointer q; if(p == NULL) { cout << "Elemento inexistente"; abort(); } if(x < p->entry) { Delete(x,p->LeftNode,h); if(h) balancel(p,h); } else if(x > p->entry) { Delete(x,p->RightNode,h); if(h) balancer(p,h); } else // remover p-> } { q = p; if(q->rightnode == NULL) { p = q->leftnode; h = true; } else if(q->leftnode == NULL) { p = q->rightnode; h = true; } else { DelMin(q,q->RightNode,h); if(h) balancer(p,h); } delete q; }

88 Remoção void AVLTree::DelMin(TreePointer &q, TreePointer &r, bool &h) { if(r->leftnode!= NULL) { DelMin(q, r->leftnode, h); if(h) balancel(r,h); } else { q->entry = r->entry; q->count = r->count; q = r; r = r->rightnode; h = true; } }

89 Remoção void AVLTree::balanceL(TreePointer &pa, bool &h) { TreePointer pb, pc; int balb, balc; // subarvore esquerda encolheu switch(pa->bal) { case : pa->bal = ; break; case : pa->bal = ; h = false; break; case : pb = pa->rightnode; balb = pb->bal; if(balb <= ) // rotacao RR { pa->rightnode = pb->leftnode; pb->leftnode = pa; if(balb == ) { pa->bal = ; pb->bal = ; h = false; } else { pa->bal = ; pb->bal = ; } pa = pb; } else // rotacao RL { pc = pb->leftnode; balc = pc->bal; pb->leftnode = pc->rightnode; pc->rightnode = pb; pa->rightnode = pc->leftnode; pc->leftnode = pa; if(balc==) pa->bal=; else pa->bal=; if(balc==) pb->bal=; else pb->bal=; pa = pc; pc->bal = ; } } } void AVLTree::balanceR(TreePointer &pa, bool &h) { TreePointer pb, pc; int balb, balc; // subarvore direita encolheu switch(pa->bal) { case : pa->bal = ; break; case : pa->bal = ; h = false; break; case : pb = pa->leftnode; balb = pb->bal; if(balb >= ) // rotacao LL { pa->leftnode = pb->rightnode; pb->rightnode = pa; if(balb == ) { pa->bal = ; pb->bal = ; h = false; } else { pa->bal = ; pb->bal = ; } pa = pb; } else // rotacao LR { pc = pb->rightnode; balc = pc->bal; pb->rightnode = pc->leftnode; pc->leftnode = pb; pa->leftnode = pc->rightnode; pc->rightnode = pa; if(balc==) pa->bal=; else pa->bal=; if(balc==) pb->bal=; else pb->bal=; pa = pc; pc->bal = ; } } }

90 Resumo Há um custo adicional para manter uma árvore balanceada, mesmo assim garantindo O(log 2 n), mesmo no pior caso, para todas as operações Em testes empíricos Uma rotação é necessária a cada duas inserções Uma rotação é necessária a cada cinco remoções A remoção em árvore balanceada é tão simples (ou tão complexa) quanto a inserção

91 Slides baseados em: Horowitz, E. & Sahni, S.; Fundamentos de Estruturas de Dados, Editora Campus, Wirth, N.; Algoritmos e Estruturas de Dados, Prentice/Hall do Brasil, Material elaborado por José Augusto Baranauskas Elaboração inicial 26; Revisão atual 27

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Algoritmos e Estruturas de Dados I Nesta aula será apresentado o ADT árvore binária de busca, também conhecidas como dicionários binários Uma árvore binária de busca é uma estrutura

Leia mais

Aula 13 Árvores Adelson-Velskii e Landis

Aula 13 Árvores Adelson-Velskii e Landis Algoritmos e Estruturas de Dados I Aula 13 Árvores Adelson-Velskii e Landis Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br Q1-2019 1 AVL G.M. Adelson-Velskii y E.M. Landis An algorithm for the organization

Leia mais

Aula 10 Árvores Adelson-Velskii e Landis

Aula 10 Árvores Adelson-Velskii e Landis MC3305 Algoritmos e Estruturas de Dados II Aula 10 Árvores Adelson-Velskii e Landis Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2014 1 Árvores balanceadas 2 Árvores balanceadas As ABB permitem

Leia mais

Algoritmos e Estruturas de Dados I. Aula 11 Árvores AVL. Prof. Jesús P. Mena-Chalco.

Algoritmos e Estruturas de Dados I. Aula 11 Árvores AVL. Prof. Jesús P. Mena-Chalco. Algoritmos e Estruturas de Dados I Aula 11 Árvores AVL Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 1Q-2019 1 Sobre a altura de uma ABB 2 Altura de uma ABB 4 2 1 6 3 5 7 Uma árvore de 7 elementos

Leia mais

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza Algoritmos e Estrutura de Dados II Árvore AVL Prof Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material da Prof a Ana Eliza Árvores Binárias de Busca Objetivo da Utilização Minimizar

Leia mais

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof a Karina Oliveira. Fonte: Prof a Ana Eliza

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof a Karina Oliveira. Fonte: Prof a Ana Eliza Algoritmos e Estrutura de Dados II Árvore AVL Prof a Karina Oliveira kkco@dei.unicap.br Fonte: Prof a Ana Eliza Árvores Binárias de Busca Objetivo da Utilização Minimizar o número de comparações efetuadas,

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores AVL Árvores Binárias de Busca Altura de uma árvore binária (AB): igual à profundidade, ou nível máximo, de suas folhas A eficiência da busca em árvore depende do seu balanceamento Algoritmos de

Leia mais

Estruturas de Dados. Aula 08. Árvores AVL II. Karina Mochetti

Estruturas de Dados. Aula 08. Árvores AVL II. Karina Mochetti Estruturas de Dados 2018.2 Árvore AVL Uma Árvore AVL (Adelson, Velskii e Landis) T é uma Árvore Binária de Busca Balanceada, tal que: T é vazia; T consiste de um nó raiz k e duas subárvores binárias Te

Leia mais

Árvores. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

Árvores. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP Árvores lgoritmos e Estruturas de Dados I Nesta aula veremos conceitos e definições sobre árvores Diferentemente das estruturas de pilhas, filas e listas que são lineares, uma árvore é uma estrutura de

Leia mais

Introdução a AVL: teoria e prática. 22/11, 25/11 e 30/11

Introdução a AVL: teoria e prática. 22/11, 25/11 e 30/11 Introdução a AVL: teoria e prática 22/11, 25/11 e 30/11 Árvores binárias de busca (ABB) Árvores de grau 2, isto é, cada nó tem dois filhos, no máximo Raiz B A C Terminologia: filho esquerdo filho direito

Leia mais

Árvores binárias de busca

Árvores binárias de busca Árvores binárias de busca / Árvores de busca / 1 Árvores binárias de busca, ou binary search trees, BST, são árvores binárias onde, para cada sub-árvore, todos os elementos da sub-árvore da esquerda são

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores AVL Árvores Binárias de Busca Altura de uma árvore binária (AB): igual à profundidade, ou nível máximo, de suas folhas A eficiência da busca em árvore depende do seu balanceamento Algoritmos de

Leia mais

ÁRVORE AVL. Problema do balanceamento

ÁRVORE AVL. Problema do balanceamento ÁRVORE VL Prof. ndré ackes Problema do balanceamento 2 eficiência da busca em uma árvore binária depende do seu balanceamento. O(log N), se a árvore está balanceada O(N), se a árvore não está balanceada

Leia mais

Árvores Binárias Balanceadas Estrutura de Dados I

Árvores Binárias Balanceadas Estrutura de Dados I - entro de iências Exatas, Naturais e de Saúde Departamento de omputação Árvores inárias alanceadas Estrutura de Dados I OM06992 - Estrutura de Dados I Prof. Marcelo Otone guiar marcelo.aguiar@ufes.br

Leia mais

Árvores binárias de busca

Árvores binárias de busca Árvores binárias de busca SCC-214 Projeto de Algoritmos Thiago A. S. Pardo Árvore binárias Árvores de grau 2, isto é, cada nó tem dois filhos, no máximo Raiz D B A E C F Terminologia: filho esquerdo filho

Leia mais

Listas Lineares Ordenadas

Listas Lineares Ordenadas Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre

Leia mais

Árvores Vermelho-Preto

Árvores Vermelho-Preto Árvores Vermelho-Preto SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC)

Leia mais

Árvores Vermelho-Preto

Árvores Vermelho-Preto SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade de São

Leia mais

Árvores AVL. O balanceamento da árvore pode ser realizado localmente se apenas uma porção da árvore for afetada por operações de inserção ou remoção.

Árvores AVL. O balanceamento da árvore pode ser realizado localmente se apenas uma porção da árvore for afetada por operações de inserção ou remoção. Árvores Árvores AVL Os algoritmos vistos trabalham sobre a árvore toda. Se houver a necessidade de manter o balanceamento a cada inserção ou remoção, então sua eficiência fica bastante prejudicada. O balanceamento

Leia mais

AED2 - Aulas 06 e 07 Árvores AVL e rubro-negras

AED2 - Aulas 06 e 07 Árvores AVL e rubro-negras AED2 - Aulas 06 e 07 Árvores AVL e rubro-negras Árvores AVL AVL vem dos nomes dos seus inventores: Adelson-Velsky and Landis. Definições: a altura de uma subárvore é o comprimento do caminho mais longo

Leia mais

Árvores binárias de busca

Árvores binárias de busca Árvores binárias de busca Introdução à Ciência de Computação II Diego R. Amancio Baseado no material do Prof. Thiago A. S. Pardo Árvore binárias n Árvores de grau 2, isto é, cada nó tem dois filhos, no

Leia mais

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE ESTRUTURA DE DADOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Curso de Tecnologia

Leia mais

Algoritmos e Estrutura de Dados. Aula 17 Estrutura de Dados: Árvores AVL Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Aula 17 Estrutura de Dados: Árvores AVL Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 17 Estrutura de Dados: Árvores AVL Prof. Tiago A. E. Ferreira Introdução O nome AVL vem de seus criadores Adelson Velskye Landis, cuja primeira referência encontra-se

Leia mais

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura Árvores B Prof. Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Fonte: Material da Prof a Ana Eliza Lopes Moura Situação Problema Memória Principal Volátil e limitada Aplicações Grandes

Leia mais

Linguagem C: Árvores AVL

Linguagem C: Árvores AVL Instituto de C Linguagem C: Árvores AVL Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Árvores Balanceadas As árvores binárias de pesquisa são,

Leia mais

Universidade Federal de Mato Grosso Estrutura de Dados II

Universidade Federal de Mato Grosso Estrutura de Dados II Universidade Federal de Mato Grosso Estrutura de Dados II Curso de Ciência da Computação Prof. Thiago P. da Silva thiagosilva@ufmt.br Agenda Definições Fator de Balanceamento Estrutura de um Nó Operações

Leia mais

Árvores AVL e Árvores B. Jeane Melo

Árvores AVL e Árvores B. Jeane Melo Árvores AVL e Árvores B Jeane Melo Roteiro Árvores Binárias Árvores AVL Definição Motivação Balanceamento Operações de rebalanceamento Árvores B Introdução Árvores Binárias Árvores binárias Cada nó tem

Leia mais

EAD Árvore - representação usando listas ligadas

EAD Árvore - representação usando listas ligadas 5.1. Definição - A pesquisa de um elemento numa árvore binária de pesquisa implica - fazer uma travessia da árvore até se encontrar o elemento procurado, ou - se concluir da sua inexistência. - As travessias

Leia mais

ALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão

ALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 5.1 - Árvores, Árvores Binárias e Árvores Binárias de Busca

Leia mais

Árvores AVL. Estrutura de Dados II Jairo Francisco de Souza

Árvores AVL. Estrutura de Dados II Jairo Francisco de Souza Árvores AVL Estrutura de Dados II Jairo Francisco de Souza Introdução As árvores binárias de pesquisa são projetadas para um acesso rápido à informação. Idealmente a árvore deve ser razoavelmente equilibrada

Leia mais

ÁRVORES BALANCEADAS (AVL)

ÁRVORES BALANCEADAS (AVL) ÁRORES BALANCEADAS (AL) PALO JOSÉ DA SILA E SILA 1. Árvores balanceadas Como já vimos anteriormente, o uso de árvores binárias de busca sem a preocupação com seu balanceamento pode levar a um aumento de

Leia mais

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 Árvores Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 2 Árvore Binária de Busca Definição: uma árvore binária de busca (ABB) é uma árvore binária na qual

Leia mais

Árvores AVL. Prof. Robinson Alves

Árvores AVL. Prof. Robinson Alves Prof. Robinson Alves O que veremos? Conceitos Inserção Remoção Balanceamento Código Java de AVL Árvores Balanceadas As árvores binárias de pesquisa são, em alguns casos, pouco recomendáveis para as operações

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto

Leia mais

Introdução a árvores AVL. Prof. Ernesto Lindstaedt

Introdução a árvores AVL. Prof. Ernesto Lindstaedt Introdução a árvores AVL Prof. Ernesto Lindstaedt Definição O nome AVL vem dos seus criadores Adelson Velsky e Landis (1962); Uma ABP T é denominada AVL se: Para todos nós de T,, as alturas de suas duas

Leia mais

INE5408 Estruturas de Dados

INE5408 Estruturas de Dados INE5408 Estruturas de Dados - Características - Rotações Árvores AVL Características Manter uma árvore binária de busca balanceada sob a presença de constantes inserções e deleções é ineficiente. Para

Leia mais

8. ÁRVORES ÁRVORES Niv 1 Niv 2 Niv 3 Niv 4. Até Introdução

8. ÁRVORES ÁRVORES Niv 1 Niv 2 Niv 3 Niv 4. Até Introdução 8. ÁRVORES Até... 8.1 Introdução ÁRVORES Formas de Armazenamento: Árvores Estáticas: Type Tipo_Árvore = Array[1..Max] of Tipo_Dado; Por exemplo : árvore de grau 3. P 5 7 9 0 3 8 2 5 2 5 7 9 0 3-1 -1 8

Leia mais

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior Árvores Estruturas de Dados Prof. Vilson Heck Junior Árvores INTRODUÇÃO Introdução Árvores são estruturas de dados utilizadas para armazenar e recuperar dados de forma rápida e eficiente; Árvores não são

Leia mais

Árvore AVL A seguir estudaremos árvore AVL e árvore 234. Os slides que versão sobre as árvores retro aludidas foram baseados nos slides gerados pela

Árvore AVL A seguir estudaremos árvore AVL e árvore 234. Os slides que versão sobre as árvores retro aludidas foram baseados nos slides gerados pela 488 Árvore AVL A seguir estudaremos árvore AVL e árvore 234. Os slides que versão sobre as árvores retro aludidas foram baseados nos slides gerados pela professora Elisa Maria Pivetta Cantarelli intitulados

Leia mais

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ÁRVORES BINÁRIAS DE BUSCA Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 4 INSTITUTO DE COMPUTAÇÃO

Leia mais

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo PMR2300 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó (exceto a

Leia mais

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS Cristina Boeres Árvore Binária - altura máxima Seja a árvore A formada com as seguintes inserções! 1, 2, 3, 4, 5, 6 e 7 1 2 3 4! Pior caso: O(n) 5 6

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas Programação Funcional 16 a Aula Árvores equilibradas Pedro Vasconcelos DCC/FCUP 2014 Aula anterior Operações sobre árvores binárias ordenadas: 1 pesquisa; 2 inserção; 3 remoção. Estas operações são mais

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Algoritmos e Estruturas de Dados II Árvores - AVL. Prof. César Melo DCC/ICE/UFAM

Algoritmos e Estruturas de Dados II Árvores - AVL. Prof. César Melo DCC/ICE/UFAM Algoritmos e Estruturas de Dados II Árvores - AVL Prof. César Melo DCC/ICE/UFAM Até mais ABB, muito prazer AVL. Escreva sobre a estrutura de dados Árvore Binária de Busca(ABB). Você terá 10 minutos para

Leia mais

Dicionários. TAD Orientado a conteúdo

Dicionários. TAD Orientado a conteúdo Dicionários TAD Orientado a conteúdo Dicionários efinição: Tipo abstrato de dados orientado a onteúdo. Contrasta com as PILHAs e FILAs que são orientadas a posição. perações implementadas: Inserir(d,x)

Leia mais

Árvores AVL IAED, 2014/2015

Árvores AVL IAED, 2014/2015 Árvores AVL IAED, 24/25 Resumo da aula de hoje Recapitular algumas ideias da última aula Pesquisa, inserção, remoção & travessias em árvores binárias de pesquisa. Árvores binárias equilibradas Exemplo:

Leia mais

DAINF - Departamento de Informática

DAINF - Departamento de Informática DAINF - Departamento de Informática Algoritmos 2 - Árvore binária de busca Prof. Alex Kutzke ( http://alex.kutzke.com.br/courses ) 30 de Novembro de 2015 Slides adaptados do material produzido pelo Prof.

Leia mais

Árvores. Prof. César Melo ICOMP/UFAM

Árvores. Prof. César Melo ICOMP/UFAM Árvores Prof. César Melo ICOMP/UFAM Introdução v Árvore é uma estrutura adequada para representar hierarquias Diretórios em um computador Serviço de resolução de nomes na Internet v A forma mais natural

Leia mais

UNILASALLE Curso de Bacharelado em Ciência da Computação. Estrutura de Dados II Prof. Magalí T. Longhi. Árvores AVL*

UNILASALLE Curso de Bacharelado em Ciência da Computação. Estrutura de Dados II Prof. Magalí T. Longhi. Árvores AVL* UNILASALLE Curso de Bacharelado em Ciência da Computação Estrutura de Dados II Prof. Magalí T. Longhi Árvores AVL* * Material preparado para a disciplina de Estrutura de Dados II do Curso de Bacharelado

Leia mais

Árvores AVL (Balanceadas) Profª.Drª. Roseli Ap. Francelin Romero Fonte: Profa. Patrícia Marchetti Revisão: Gedson Faria

Árvores AVL (Balanceadas) Profª.Drª. Roseli Ap. Francelin Romero Fonte: Profa. Patrícia Marchetti Revisão: Gedson Faria SCE 182 SCC122 Algoritmos Estruturas e Estruturas de Dados de Dados I Árvores AVL (Balanceadas) Profª.Drª. Roseli Ap. Francelin Romero Fonte: Profa. Patrícia Marchetti Revisão: Gedson Faria Árvores AVL

Leia mais

Módulo 9. Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II C++ (Rone Ilídio)

Módulo 9. Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II C++ (Rone Ilídio) Módulo 9 Pesquisa em Memória Primária Algoritmos e Estruturas de Dados II C++ (Rone Ilídio) Árvore Binária Estrutura baseada em ponteiros Os elementos são chamados nós Cada nó é ligado a, 1 ou 2 elementos

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Aula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Aula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Aula 16: Pesquisa em Memória Primária - Árvores de Busca Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Árvores de Pesquisa A árvore de pesquisa é uma estrutura de dados muito eficiente para

Leia mais

Árvores Binárias de Busca (ABB) 18/11

Árvores Binárias de Busca (ABB) 18/11 Árvores Binárias de Busca (ABB) 18/11 Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguintes propriedade: Para todo nó da árvore, se seu valor é X, então:

Leia mais

Árvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m

Árvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m Árvore B Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m 1valores; Os valores dentro de cada nó estão ordenados; Todos os valores na subárvore esquerda de um valor são menores que

Leia mais

Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP

Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Árvores Binárias Árvores Árvores representam estruturas de dados caracterizadas por uma relação hierárquica da informação:

Leia mais

{ = == NULL) = == NULL)

{ = == NULL) = == NULL) Com base no que foi discutido codifique uma função, na linguagem C, que implemente a remoção por cópia. void remocaoporcopia(arvorebinenc arvore) { ArvoreBinEnc prev, tmp = arvore; if (arvore->filhodir

Leia mais

Árvores de Pesquisa (Parte II)

Árvores de Pesquisa (Parte II) 2013-02 Aula 21 Adaptado por Reinaldo Fortes para o curso de 2013-02 Arquivo original: 22._arvores_(parte_2) Árvores de Pesquisa (Parte II) Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 24

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Árvores (parte 3) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.

Leia mais

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó.

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó. 1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó. b. Achar o maior elemento (campo numérico) de uma árvore binária dada. c. Trocar

Leia mais

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior Árvore Binária de Busca (ABB) o valor associado à raiz é sempre maior que o valor associado a qualquer nó da sub-árvore à esquerda

Leia mais

Árvores Equilibradas. Sumário

Árvores Equilibradas. Sumário Árvores Equilibradas Sumário Splay Vermelho Preto AA e BB Multidimensionais quaternárias k d Pesquisa Lexicográfica tries multivia tries binárias PATRICIA Árvores Equilibradas Sumário Árvores AVL Árvores

Leia mais

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, Filas Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, pelo uso da CPU Algoritmos e Estruturas de Dados I José

Leia mais

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó.

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó. 1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó. b. Achar o maior elemento (campo numérico) de uma árvore binária dada. c. Trocar

Leia mais

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação. Árvores Balanceadas

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação. Árvores Balanceadas Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação Árvores Balanceadas Nelson Cruz Sampaio Neto nelsonneto@ufpa.br 25 de abril de 2016 Introdução A árvore de busca

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Árvores (parte 4) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.

Leia mais

INF 1010 Estruturas de Dados Avançadas. Árvores binárias

INF 1010 Estruturas de Dados Avançadas. Árvores binárias INF 1010 Estruturas de Dados Avançadas Árvores binárias 1 Árvore estrutura hierárquica: A B E F C D G A B C E F D G A B C D E F G (A (B (E, F)), C, (D (G))) 05/09/16 2 Árvore - definições árvore: nó raiz

Leia mais

Árvores balanceadas. Aleardo Manacero Jr.

Árvores balanceadas. Aleardo Manacero Jr. Árvores balanceadas Aleardo Manacero Jr. Árvores Balanceadas Para que uma árvore seja, de fato, um mecanismo eficiente, é preciso que os seus elementos estejam distribuídos de forma relativamente homogênea

Leia mais

1: unit ArvAVL; 2: { Unit que implementa uma arvore AVL } 3: interface 4: 5: type 6: Tipo_da_Chave = longint; 7: Tipo_do_Dado = record 8: Chave :

1: unit ArvAVL; 2: { Unit que implementa uma arvore AVL } 3: interface 4: 5: type 6: Tipo_da_Chave = longint; 7: Tipo_do_Dado = record 8: Chave : 1: unit ArvAVL; 2: { Unit que implementa uma arvore AVL } 3: interface 4: 5: type 6: Tipo_da_Chave = longint; 7: Tipo_do_Dado = record 8: Chave : Tipo_da_Chave; 9: Nome : string; 10: { Outras informacoes

Leia mais

Árvore Vermelho-Preta. Estrutura de Dados II Jairo Francisco de Souza

Árvore Vermelho-Preta. Estrutura de Dados II Jairo Francisco de Souza Árvore Vermelho-Preta Estrutura de Dados II Jairo Francisco de Souza Introdução As árvores Vermelho-preto são árvores binárias de busca Também conhecidas como Rubro-negras ou Red-Black Trees Foram inventadas

Leia mais

Árvore Binária de Busca

Árvore Binária de Busca MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvores binárias de busca do capítulo 4 do livro N. Wirth. Algorithms

Leia mais

Uma árvore binária de busca não garante acesso em tempo logarítmico.

Uma árvore binária de busca não garante acesso em tempo logarítmico. ÁRVORES LNEDS Uma árvore binária de busca não garante acesso em tempo logarítmico. Inserções ou eliminações podem desbalanceá-la. Pior caso: a árvore degenera em lista ligada, onde a busca passa a gastar

Leia mais

Árvores Rubro-Negra IFRN

Árvores Rubro-Negra IFRN Árvores Rubro-Negra IFRN Árvores Rubro-Negra Seja T uma árvore binária de pesquisa Cada nó deve estar associado a uma cor rubro ou negra Uma árvore é rubro-negra quando as seguintes condições são satisfeitas:

Leia mais

Métodos de Pesquisa de Dados

Métodos de Pesquisa de Dados UFSC-CTC-INE INE5384 - Estruturas de Dados Métodos de Pesquisa de Dados Prof. Ronaldo S. Mello 22/2 Métodos de Pesquisa de Dados Encontrar um dado em um conjunto de dados de forma eficiente Baseia-se na

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca 0. Um breve comentário sobre os algoritmos de busca em tabelas De uma maneira geral, realizam-se operações de busca, inserção e remoção de elementos numa tabela. A busca sequencial tradicional é O(N).

Leia mais

ÁRVORES. Prof. Yan ndre Maldonado - 1. Prof. Yandre Maldonado e Gomes da Costa

ÁRVORES. Prof. Yan ndre Maldonado - 1. Prof. Yandre Maldonado e Gomes da Costa ÁRVORES Prof. Yan ndre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa Árvores Prof. Yan ndre Maldonado - 2 Árvores são estruturas de dados que caracterizam uma relação entre os dados que a compõem;

Leia mais

Estruturas de Dados com Jogos. Capítulo 9 Árvores Balanceadas

Estruturas de Dados com Jogos. Capítulo 9 Árvores Balanceadas Estruturas de Dados com Jogos Capítulo 9 Árvores Balanceadas 1 Seus Objetivos neste Capítulo Entender o conceito de Balanceamento, e sua importância para a eficiência das Árvores Binárias de Busca; Desenvolver

Leia mais

INF1010 Lista de Exercícios 2

INF1010 Lista de Exercícios 2 INF00 Lista de Exercícios 2 Árvores. Construir algoritmo para dada uma árvore n-ária, transformá-la em uma árvore binária. 2. Qual a maior e menor quantidade de nós que podem existir em uma árvore binária

Leia mais

Árvores de Pesquisa (Parte I)

Árvores de Pesquisa (Parte I) Baseado no material do Prof. Reinaldo Fortes para o curso de 2014-01 Arquivo original: 21._arvores_(parte_1) Árvores de Pesquisa (Parte I) Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Algoritmos

Leia mais

PROGRAMAÇÃO III (LTSI)

PROGRAMAÇÃO III (LTSI) ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2009/2010 Árvores Binárias AVL Tal como visto anteriormente, caso

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches CES-11 lgoritmos e Estruturas de Dados Carlos lberto lonso Sanches Juliana de Melo Bezerra Balanceamento de árvores Árvores balanceadas Árvores VL Inserção em árvores VL Eliminação em árvores VL ltura

Leia mais

Problemas com ABP Desbalanceamento progressivo

Problemas com ABP Desbalanceamento progressivo Árvores Binárias de Pesquisa Árvores Balanceadas Aresentam uma relação de ordem A ordem é definida ela chave Oerações: inserir consultar 5 excluir 3 8 15 4 6 9 Problemas com ABP Exemlo: Problemas com ABP

Leia mais

Árvores Binárias. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io)

Árvores Binárias. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io) Árvores Binárias Algoritmos e Estruturas de Dados 2 201-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Árvores 2 Raíz 3 Folhas 4 Nós Internos 5 Pais e Filhos 6 Descendentes Ancestrais 8 Irmãos 9 Níveis

Leia mais

Árvores binárias de busca

Árvores binárias de busca Árvores binárias de busca S-202 lgoritmos e Estruturas de Dados I Prof. Thiago. S. Pardo Árvore binárias Árvores de grau 2, isto é, cada nó tem dois filhos, no máximo Raiz D B E Terminologia: filho esquerdo

Leia mais

Pesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Pesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Pesquisa em Memória Primária Árvores de Busca David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Árvores de Pesquisa A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar

Leia mais

Árvores Binárias de Busca (ABB) 18/11

Árvores Binárias de Busca (ABB) 18/11 Árvores Binárias de Busca (ABB) 18/11 Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguintes propriedade: Para todo nó da árvore, se seu valor é X, então:

Leia mais

Busca Hierárquica em Memória

Busca Hierárquica em Memória Busca Hierárquica em Memória Principal Após estudar este capítulo, você deverá ser capaz de: hh Definir e usar os seguintes conceitos: Árvore binária de busca Árvore binária degenerada Rotações direita

Leia mais

Aula 16: Pesquisa em Memória Primária - Árvores AVL. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Aula 16: Pesquisa em Memória Primária - Árvores AVL. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Aula 6: Pesquisa em Memória Primária - Árvores AVL Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Árvore AVL Árvore binária de busca tal que, para qualquer nó interno v, a diferença das alturas

Leia mais

AED2 - Aula 04 Vetores ordenados e árvores de busca

AED2 - Aula 04 Vetores ordenados e árvores de busca AED2 - Aula 04 Vetores ordenados e árvores de busca Considere um vetor ordenado v de tamanho n. Ele suporta as seguintes operações: busca - dada uma chave k, devolva um apontador para um objeto com esta

Leia mais

Árvore binária - definição

Árvore binária - definição Árvore binária - definição árvore binária: conjunto finito de nós Æ (árvore vazia) {raiz, sub-árvore esquerda, sub-árvore direita}, onde sae e sad são conjuntos disjuntos Æ ou raiz /* nó da árvore binária

Leia mais

Árvores de Pesquisa (Parte II)

Árvores de Pesquisa (Parte II) 2014-01 Aula 20 Adaptado por Reinaldo Fortes para o curso de 2014-01 Arquivo original: 22._arvores_(parte_2) Árvores de Pesquisa (Parte II) Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Algoritmos

Leia mais

Árvores de pesquisa. Árvores de pesquisa equilibradas

Árvores de pesquisa. Árvores de pesquisa equilibradas Árvores VL Árvores Splay Árvores Árvores de pesquisa Árvores Vermelho-Preto Árvores e Árvores Multidimensionais quaternárias k-d [Árvores para Pesquisa Lexicográfica tries multivia tries binárias PTRII]

Leia mais

Árvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore

Árvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore Árvores Rubro-Negras Árvores Rubro-Negras (Vermelho-Preta) Árvore Binária de Pesquisa (ABP) com nodos coloridos de vermelho e preto Árvore balanceada Qualquer caminho da raiz até as folhas, nenhum caminho

Leia mais

Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP

Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Pilhas & Filas Estruturas Lineares Vários problemas frequentemente envolvem a manipulação de sequências ordenadas de objetos.

Leia mais

Árvores de Pesquisa (Parte II)

Árvores de Pesquisa (Parte II) Árvores de Pesquisa (Parte II) Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 22 Algoritmos e Estruturas de Dados I Árvores Binárias de Pesquisa Inserindo os nós 30, 20, 40, 10, 25, 35 e 50

Leia mais

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de

Leia mais

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA ÁRVORES E ÁRVORE BINÁRIA DE BUSCA Prof. André Backes Definição 2 Diversas aplicações necessitam que se represente um conjunto de objetos e as suas relações hierárquicas Uma árvore é uma abstração matemática

Leia mais