Вы находитесь на странице: 1из 26

INE 5384

Estruturas de Dados

Profa. Patrícia Vilain

2003.2
Árvores Binárias
Á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 à
B C
subárvore à
esquerda direita
D E F

G H
Á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.


Árvore de Busca Binária

subárvore à
B G
subárvore à
esquerda direita
A E H

D F
Propriedades
As propriedades definidas para árvores N-árias também são
aplicadas às árvores binárias:
• Grau de um Nodo
C
• Nodo Folha e Nodo Interno
• Caminho e Comprimento de um Caminho
B G
• Profundidade de um Nodo
• Nodo Pai e Nodo Filho A E H
• Nodo Irmão
• Nodo Ancestral e Descendente D F
• Altura de uma Árvore
Propriedade
• “O número máximo de nodos em uma árvore binária A com
altura h(A) é 2h(a)+1-1”.

D D D D

B B E B E

A C
Busca em Largura
• Percorre a árvore por ordem de profundidade de nodo

10

C
busca pela ESQ:
C-B-G-A-E-H-D-F
20 B G
busca pela DIR:
C-G-B-H-E-A-F-D
A E H

D F
Busca em Profundidade
• Percorre a árvore por ordem de sub-árvore (recursivamente)

B G
10

A E H

D F

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)
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

B G

A E H

D F
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:
B G C-B-A-G-E-D-F-H

A E H

D F
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

B G

A E H

D F
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:
B G A-B-D-F-E-H-G-C

A E H

D F
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

B G

A E H

D F
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
in-ordem:
B G A-B-C-D-E-F-G-H

A E H

D F
Modelagem Física de Árvores Binárias
Alternativas de implementação:
• Array
• Encadeamento

B G

A E H

D F
Árvore Binária com Array
Árvore com Array
Alternativa 1: (nodo, número de filhos)

C 2 B 1 A 0 G 2 E 1 D 0 H 0

B G

A E H

D
Árvore com Array
Alternativa 1: (nodo, número de filhos)

C 2 B 1 A 0 G 2 E 1 D 0 H 0

• 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
Á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

B G

A E H

D
Á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

• 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
Árvore Binária com
Encadeamento
Árvore Binária com Encadeamento
• Alternativa 1:

árvore
C C

B G B G

A E H
A E H
D F
D F
esq dado dir
Classe ArvoreBinariaEncadeada
public class ArvoreBinariaEncadeada implements
ArvoreBinaria {
Comparable elem;
C
ArvoreBinariaEncadeada esq;
ArvoreBinariaEncadeada dir;
B G
int numElementos;

public ArvoreBinariaEncadeada() {
A E H
this.elem = null;
this.esq = null; D F
this.dir = null;
this.numElementos = 0;
}
Classe ArvoreBinariaEncadeada
public void insere (Comparable elemento) {

B G

A E H

D F

Вам также может понравиться