260 likes | 374 Views
INE 5384 Estruturas de Dados Prof a . Patrícia Vilain 2003.2. Árvores Binárias. A. C. H. F. D. B. E. G. Árvore Binária. Uma árvore binária é uma árvore N-ária com N = 2. Distingue-se entre uma subárvore esquerda e uma direita. subárvore à esquerda. subárvore à direita.
E N D
INE 5384 Estruturas de Dados Profa. Patrícia Vilain 2003.2
A C H F D B E G Árvore Binária • Uma árvore binária é uma árvoreN-ária com N = 2. • Distingue-se entre uma subárvore esquerda e uma direita. subárvore à esquerda subárvore à direita
Árvore de Busca Binária Uma árvore binária é uma árvore de busca binária quando: • todo elemento armazenado na subárvore esquerda é menor que a raiz r; • nenhum elemento armazenado na subárvore direita é menor que a raiz r; • as subárvores esquerda e direita também são árvores de busca binária. Uma árvore binária é ordenada por default.
C G H F B A E D Árvore de Busca Binária subárvore à esquerda subárvore à direita
C G H F B A E D Propriedades As propriedades definidas para árvores N-árias também são aplicadas às árvores binárias: • Grau de um Nodo • Nodo Folha e Nodo Interno • Caminho e Comprimento de um Caminho • Profundidade de um Nodo • Nodo Pai e Nodo Filho • Nodo Irmão • Nodo Ancestral e Descendente • Altura de uma Árvore
D D D D E E B A B B C Propriedade • “O número máximo de nodos em uma árvore binária A com altura h(A) é 2h(a)+1-1”.
C G H F B A E D Busca em Largura • Percorre a árvore por ordem de profundidade de nodo 10 busca pela ESQ: C-B-G-A-E-H-D-F 20 busca pela DIR: C-G-B-H-E-A-F-D
C G H F B A E D Busca em Profundidade • Percorre a árvore por ordem de sub-árvore (recursivamente) 10 20
Busca em Profundidade em Árvore Binária • Tipos de pesquisa em uma busca em profundidade: • pré-ordem (ou pré-fixada) • pós-ordem (ou pós-fixada) • in-ordem (ou in-fixada ou central)
C G H F B A E D Pré-Ordem em Árvore Binária Passos: • Visita o nodo raiz • Pesquisa em pré-ordem a subárvore à ESQ • Pesquisa em pré-ordem a subárvore à DIR
C G H F B A E D Pré-Ordem em Árvore Binária Passos: • Visita o nodo raiz • Pesquisa em pré-ordem a subárvore à ESQ • Pesquisa em pré-ordem a subárvore à DIR pré-ordem: C-B-A-G-E-D-F-H
C G H F B A E D Pós-Ordem em Árvore Binária Passos: • Pesquisa em pós-ordem a subárvore à ESQ • Pesquisa em pós-ordem a subárvore à DIR • Visita o nodo raiz
C G H F B A E D Pós-Ordem em Árvore Binária Passos: • Pesquisa em pós-ordem a subárvore à ESQ • Pesquisa em pós-ordem a subárvore à DIR • Visita o nodo raiz pós-ordem: A-B-D-F-E-H-G-C
C G H F B A E D In-Ordem em Árvore Binária Aplica-se apenas aárvores binárias Passos: • Pesquisa em in-ordem a subárvore à ESQ • Visita o nodo raiz • Pesquisa em in-ordem a subárvore à DIR
C G H F B A E D In-Ordem em Árvore Binária Aplica-se apenas aárvores binárias Passos: • Pesquisa em in-ordem a subárvore à ESQ • Visita o nodo raiz • Pesquisa em in-ordem a subárvore à DIR in-ordem: A-B-C-D-E-F-G-H
C G H F B A E D Modelagem Física de Árvores Binárias Alternativas de implementação: • Array • Encadeamento
C 2 B 1 A 0 G 2 E 1 D 0 H 0 C G H A B D E Árvore com Array Alternativa 1: (nodo, número de filhos)
C 2 B 1 A 0 G 2 E 1 D 0 H 0 Árvore com Array Alternativa 1: (nodo, número de filhos) • Desvantagens: • dado adicional (número filhos) • inserção, remoção: • achar a posição correta para inserir/remover um nodo • deslocamento • consultar o pais de um nodo • consultar os filhos de um nodo
0 1 2 3 4 5 6 7 8 9 10 11 12 13 C -1 B 0 A 2 G 0 E 6 D 8 H 6 C G H A B D E Árvore com Array Alternativa 2: (nodo, posição do nodo pai)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 C -1 B 0 A 2 G 0 E 6 D 8 H 6 Árvore com Array Alternativa 2: (nodo, posição do nodo pai) • Desvantagens: • dado adicional (posição pai) • inserção: • buscar pai para descobrir o valor da sua posição • exclusão: • deslocamento e atualização de referências aos nodos pais no vetor • consultar os filhos de um nodo
C G H F A B D E Árvore Binária com Encadeamento • Alternativa 1: árvore C B G A E H D F esq dado dir
C G H F B A E D Classe ArvoreBinariaEncadeada public class ArvoreBinariaEncadeada implements ArvoreBinaria { Comparable elem; ArvoreBinariaEncadeada esq; ArvoreBinariaEncadeada dir; int numElementos; public ArvoreBinariaEncadeada() { this.elem = null; this.esq = null; this.dir = null; this.numElementos = 0; }
C G H F B A E D Classe ArvoreBinariaEncadeada public void insere (Comparable elemento) {