360 likes | 448 Views
INE 5384 Estruturas de Dados Prof a . Patrícia Vilain 2003.1. Árvores de Busca N-árias. Árvore de Busca N-ária. Uma Árvore de Busca N-ária é uma árvore que : contém m subárvores e n chaves, sendo n = m -1 e 2 <= m <= N;
E N D
INE 5384 Estruturas de Dados Profa. Patrícia Vilain 2003.1
Árvore de Busca N-ária Uma Árvore de Busca N-áriaé uma árvore que : • contém m subárvores e n chaves, sendo n = m -1 e 2 <= m<= N; • todas as chaves estão ordenadas, ou seja, dado um conjunto de chaves ch1, ch2, ..., chi, ..., chn, nesta ordem, tem-se: chi < chi+1
Exemplo de Árvore de Busca N-ária N = 4 13 54 93 3 9 22 27 50 63 71 88 100 33 44 49 51 52 74 77 83 35 38 43
Vantagem de uma Árvore de Busca N-ária Indexação de um grande volume de dados: N = 3 h(A) = 0 2 chaves h(A) = 1 2 + 3.2 = 8 chaves h(A) = 2 2 + 3.2 + 3.3.2 = 26 chaves “Quanto maior o M, maior é o número de chaves que se pode indexar e conseqüentemente, encontra-se uma chave com menos acessos à arvore”
Modelagem Física Subárvorei mantém todos os elementos maiores que elementoi e menores que elementoi+1 subárvore0 subárvore1 subárvore2 subárvoreN-2 subárvoreN-1 elem1 elem2 elemN-1 . . . SubN-1 Sub0 Sub1 SubN-2 Sub2
Implementação numElem 6 elementos null 12 39 51 77 89 102 subÁrvores Sub0 Sub1 Sub2 Sub3 Sub4 Sub5 Sub6
Operações em uma Árvore N-ária • Pesquisa • pesquisa todos os nodos • pesquisa por um elemento • Inclusão (elemento) • Exclusão (elemento)
Pesquisa de Todos os Elementos Busca in-ordem 13 54 93 null 3 9 22 27 50 63 71 88 null null 33
Pesquisa de Todos os Elementos Busca in-ordem 10 13 54 93 null 3 9 22 27 50 63 71 88 null null 33 3-9
Pesquisa de Todos os Elementos Busca in-ordem 20 13 54 93 null 3 9 22 27 50 63 71 88 null null 33 3-9-13
Pesquisa de Todos os Elementos Busca in-ordem 13 54 93 30 null 3 9 22 27 50 63 71 88 null null 33 3-9-13-22-27-33-50
Pesquisa de Todos os Elementos Busca in-ordem 13 54 93 null 3 9 22 27 50 63 71 88 null null 33 3-9-13-22-27-50-54-63-71-88-93
Pesquisa de um Elemento • Se o elemento do nodo < elemento pesquisada árvore ESQ • Se o elemento do nodo > elemento pesquisada árvore DIR • Busca dos elementos dentro do nodo: • busca seqüencial • busca binária
Busca Seqüencial Pesquisar o elemento 33. > 13 E < 54 13 54 93 null 3 9 22 27 50 63 71 88 null null 33
Busca Seqüencial Pesquisar o elemento 33. 13 54 93 > 27 E < 50 null 3 9 22 27 50 63 71 88 varredura null null 33
Busca Seqüencial Pesquisar o elemento 33. 13 54 93 null 3 9 22 27 50 63 71 88 null null 33
0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 null null null 9 9 9 13 13 13 22 22 22 33 33 33 50 50 50 54 54 54 63 63 63 71 71 71 88 88 88 Busca Binária A varredura dos elementos de um nodo é feita através de uma pesquisa binária. Pesquisar o elem. 54. chave > 50 chave < 63
Inclusão em uma Árvore N-ária • Busca a posição na qual o elemento deve ser inserido. • Caso haja espaço para inserir o elemento em um nodo, o vetor deve ser rearranjado (deslocamento de elementos e subárvores) para a sua correta colocação. Incluir o elemento 18 chave < 54 13 54 93 null 3 9 22 37 null 63 71 88 null null 26
Inclusão em uma Árvore N-ária Incluir o elemento 18 13 54 93 null 3 9 22 37 null 63 71 88 chave < 22 e existe vaga no nodo null null 26
Inclusão em uma Árvore N-ária Incluir o elemento 18 13 54 93 null 3 9 18 22 37 63 71 88 deslocamento + inserção + definição novo nodo vazio à direita null null 26
Inclusão em uma Árvore N-ária Incluir o elemento 90 chave < 90 13 54 93 null 3 9 18 22 37 63 71 88 null null 26
Inclusão em uma Árvore N-ária Incluir o elemento 90 13 54 93 chave > 88 null 3 9 18 22 37 63 71 88 90 null null null null 26 povoa um nodo vazio, definindo uma subárvore à esquerda e à direita
Exclusão em uma Árvore N-ária • Se o elemento possui subárvores ESQ e DIR vazias, ele é removido e ocorre deslocamento no vetor para ajustar os elementos restantes. • Se o elemento possui subárvores ESQ e DIR não vazias, ele é trocado com o maior elemento da subárvore ESQ ou o menor elemento da subárvore DIR (processo recursivo – até que ele esteja em um nodo folha!)
Exclusão em uma Árvore N-ária Excluir o elemento 18 13 54 93 null 3 9 18 22 37 63 71 88 90 null null null null 26
Exclusão em uma Árvore N-ária Excluir o elemento 18 não há subárvores ESQ e DIR 13 54 93 null 3 9 18 22 37 63 71 88 ajuste do vetor (deslocamento de chaves) 90 null null null null 26
Exclusão em uma Árvore N-ária Excluir o elemento 18 não há subárvores ESQ e DIR 13 54 93 null null 3 9 22 37 63 71 88 90 null null null null 26
Exclusão em uma Árvore N-ária Excluir o elemento 90 13 54 93 null null 3 9 22 37 63 71 88 90 null null null null 26
Exclusão em uma Árvore N-ária Excluir o elemento 90 não há subárvores ESQ e DIR e o elemento é o único do nodo 13 54 93 null null 3 9 22 37 63 71 88 90 null null null null 26 nodo torna-se vazio (subárvores ESQ e DIR de 90 tornam-se NULL!)
Exclusão em uma Árvore N-ária Excluir o elemento 90 não há subárvores ESQ e DIR e o elemento é o único do nodo 13 54 93 null null 3 9 22 37 63 71 88 null null 26
Exclusão em uma Árvore N-ária Excluir o elemento 54 13 54 93 null null 3 9 22 37 63 71 88 null null 26
Exclusão em uma Árvore N-ária Excluir o elemento 54 existem subárvores ESQ e DIR: o elemento é trocado com o maior elemento na ESQ 13 54 93 null null 3 9 22 37 63 71 88 null null 26
Exclusão em uma Árvore N-ária Excluir o elemento 54 o elemento possui subárvore ESQ não vazia: nova troca. 13 37 93 null null 3 9 22 54 63 71 88 null null 26
Exclusão em uma Árvore N-ária Excluir o elemento 54 o elemento pode ser removido 13 37 93 null null 3 9 22 26 63 71 88 null null 54
Exclusão em uma Árvore N-ária Excluir o elemento 54 13 37 93 null null 3 9 22 26 63 71 88
Problema da Árvore de Busca N-ária • Uma Árvore de Busca N-ária pode ficar desbalanceada. • Exemplo: • N = 4 • ordem de inclusão: 20-60-90-12-7-18-5-4-6-1-3 Alternativa de solução:Árvore B