Cap 10 - Arvores de Busca-4spp

Cap 10 - Arvores de Busca-4spp - Árvores de Busca 1...

Info iconThis preview shows pages 1–4. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Árvores de Busca 1 Estruturas de Dados Árvores de Busca 6 9 2 4 1 8 < > = Árvores de Busca 2 Estruturas de Dados Árvores Binárias de Busca Uma árvore binária de busca é uma árvore binária que armazena chaves (ou pares chave-valor) nos nós internos, satisfazendo as seguintes propriedades: ! Sejam u , v , e w três nós tais que u esteja na sub-árvore esquerda de v e w esteja na sub-árvore direita de v . Então, temos key ( u ) " key ( v ) " key ( w ) Nós externos não armazenam dados Uma visita em inordem a uma árvore binária de busca obtém valores de chave em ordem não-decrescente. 6 9 2 4 1 8 Árvores de Busca 3 Estruturas de Dados Busca Para buscar uma chave k , percorremos um caminho partindo do nó raiz v para as folhas. O próximo nó a ser visitado depende do resultado da comparação com o valor contido no nó corrente. Se alcançarmos um folha, isso significa que a chave não foi encontrada (o valor nulo será então retornado). Exemplo: k = 4: ! invocamos TreeSearch (4,root) Algorithm TreeSearch ( k , v ) if T.isExternal ( v ) return NULL if k < key ( v ) return TreeSearch ( k , T.left ( v )) else if k = key ( v ) return v else { k > key ( v ) } return TreeSearch ( k , T.right ( v )) 6 9 2 4 1 8 < > = Árvores de Busca 4 Estruturas de Dados Inserção Para executar a operação insert (k, o), o algoritmo faz busca pela chave k (usando TreeSearch) Considere que a chave k ainda não esteja na árvore, e que w seja o nó folha encontrado pela busca O algoritmo insere k no nó w e expande w, transformando-o em um nó interno Exemplo: inserir 5 6 9 2 4 1 8 6 9 2 4 1 8 5 < > > w w Árvores de Busca 5 Estruturas de Dados Remoção Para executar a operação remove ( k ), o algoritmo busca pela chave k Considere que a chave k esteja na árvore, e que v seja o nó que armazena k Se o nó v tiver um filho esquerdo w que é folha, então o algoritmo remove v e w da árvore com a operação removeExternal ( w ), que remove w e também seu pai Exemplo: remover k=4 6 9 2 4 1 8 5 v w 6 9 2 5 1 8 < > Árvores de Busca 6 Estruturas de Dados Remoção (cont.) Considere que a chave k a ser removida esteja em um nó v cujos filhos são ambos nós internos ! o algoritmo encontra w que vem logo depois de v em um percurso em inordem ! o algoritmo copia key ( w ) no nó v ! o algoritmo remove o nó w e seu filho à esquerda z (que certamente é um folha) utilizando a operação removeExternal ( z ) Exemplo: remover k=3 3 1 8 6 9 5 v w z 2 5 1 8 6 9 v 2 Árvores de Busca 7 Estruturas de Dados Desempenho Considere um dicionário com n itens implementado como uma árvore binária de busca de altura h ! o espaço utilizado é O ( n ) ! os métodos find , insert e remove levam tempo O ( h ) A altura h é O ( n ) no pior caso e O (log n ) no melhor caso dependendo de como os n itens foram inseridos Árvores de Busca 8 Estruturas de Dados Representação (Simplificada) 17, Carlos 42, Ana # # # # # # Carlos Ana 17 # # # 42 Árvores de Busca 9 Estruturas de Dados...
View Full Document

Page1 / 12

Cap 10 - Arvores de Busca-4spp - Árvores de Busca 1...

This preview shows document pages 1 - 4. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online