Árvores binárias prof. ernesto lindstaedt. definições uma árvore binária t é um conjunto...

15
Árvores Binárias Árvores Binárias Prof. Ernesto Lindstaedt Prof. Ernesto Lindstaedt

Upload: internet

Post on 17-Apr-2015

119 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Árvores BináriasÁrvores Binárias

Prof. Ernesto LindstaedtProf. Ernesto Lindstaedt

Page 2: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

DefiniçõesDefinições Uma árvore binária T é um conjunto finito de elementos Uma árvore binária T é um conjunto finito de elementos

denominados nós ou vértices, tal que:denominados nós ou vértices, tal que:• Se T = 0, a árvore é dita vazia, ouSe T = 0, a árvore é dita vazia, ou• Existe um nó especial r, chamado raiz de T, e os restantes Existe um nó especial r, chamado raiz de T, e os restantes

podem ser divididos em dois subconjuntos disjuntos, Trpodem ser divididos em dois subconjuntos disjuntos, TrEE e Tr e TrDD, a , a sub-árvore esquerda e a direita de r, respectivamente, as quais sub-árvore esquerda e a direita de r, respectivamente, as quais são também árvores binárias.são também árvores binárias.

• A raiz da sub-árvore esquerda (direita) de um nó v, se existir, é A raiz da sub-árvore esquerda (direita) de um nó v, se existir, é denominada filho esquerdo (direito) de v. Naturalmente, o denominada filho esquerdo (direito) de v. Naturalmente, o esquerdo pode existir sem o direito e vice-versa. Se r é a raiz de esquerdo pode existir sem o direito e vice-versa. Se r é a raiz de T, diz-se, também, que TrT, diz-se, também, que TrEE e Tr e TrDD são as sub-árvores esquerda e são as sub-árvores esquerda e direita de T, respectivamente.direita de T, respectivamente.

• Uma árvore binária pode ter duas sub-árvores vazias (a esquerda Uma árvore binária pode ter duas sub-árvores vazias (a esquerda e a direita). Toda árvore binária com n nós possui exatamente n e a direita). Toda árvore binária com n nós possui exatamente n + 1 sub-árvores vazias entre suas sub-árvores esquerdas e + 1 sub-árvores vazias entre suas sub-árvores esquerdas e direitas.direitas.

Page 3: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

continuaçãocontinuação

Uma árvore binária é uma árvore Uma árvore binária é uma árvore cujos os nós têm 0, 1 ou 2 filhos e cujos os nós têm 0, 1 ou 2 filhos e cada filho é designado como filho à cada filho é designado como filho à esquerda ou filho à direita (esquerda ou filho à direita (Grau 2Grau 2););

O número de folhas é uma O número de folhas é uma importante característica das árvores importante característica das árvores binárias para mensurar a eficiência binárias para mensurar a eficiência esperada de algoritmos.esperada de algoritmos.

Page 4: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Classificação de Árvores BináriasClassificação de Árvores Binárias Árvore Estritamente BináriaÁrvore Estritamente Binária

• Se cada Se cada nó não terminalnó não terminal em uma árvore binária ter em uma árvore binária ter sub-árvores à esquerda e direita, ou nenhum nó tem sub-árvores à esquerda e direita, ou nenhum nó tem filho únicofilho único;;

• Uma árvore com n folhas, terá 2n – 1 nós.Uma árvore com n folhas, terá 2n – 1 nós.

Page 5: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Classificação de Árvores BináriasClassificação de Árvores Binárias

Árvore Binária Completa (ou Quase Árvore Binária Completa (ou Quase Completa)Completa)• Uma árvore binária de nível n é uma árvore Uma árvore binária de nível n é uma árvore

binária completa se:binária completa se: cada nó com menos de dois filhos deve estar no nível cada nó com menos de dois filhos deve estar no nível

n ou no nível n-1n ou no nível n-1

Page 6: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Classificação de Árvores BináriasClassificação de Árvores Binárias

Árvore Binária CheiaÁrvore Binária Cheia• Uma árvore binária cheia de nível n é a árvore Uma árvore binária cheia de nível n é a árvore

estritamente binária, onde todos os nós folhas estão no estritamente binária, onde todos os nós folhas estão no nível n;nível n;

• Uma árvore cheia com altura h, terá 2Uma árvore cheia com altura h, terá 2hh – 1 nós. – 1 nós.

Page 7: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Caminhamentos em Árvores BináriasCaminhamentos em Árvores Binárias

• Caminhamento em profundidade: os nós Caminhamento em profundidade: os nós da sub-árvore atual têm prioridade na da sub-árvore atual têm prioridade na ordem de acesso;ordem de acesso;

• Caminhamento em largura (amplitude): Caminhamento em largura (amplitude): os nós de menor nível têm prioridade na os nós de menor nível têm prioridade na ordem de acesso.ordem de acesso.

Page 8: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Caminhamentos em Árvores BináriasCaminhamentos em Árvores Binárias Em profundidade, temos três tipos Em profundidade, temos três tipos

“canônicos”:“canônicos”: Pré-ordemPré-ordem Pós-ordemPós-ordem Em-ordemEm-ordem

Em amplitude, temos:Em amplitude, temos: Em nívelEm nível

Page 9: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Caminhamento Pré-ordemCaminhamento Pré-ordem Visitar a raizVisitar a raiz Percorrer a sub-árvore esquerda em pré-ordemPercorrer a sub-árvore esquerda em pré-ordem Percorrer a sub-árvore direita em pré-ordemPercorrer a sub-árvore direita em pré-ordem

Percurso: 4, 2, 1, 3, 6, 5, 7Percurso: 4, 2, 1, 3, 6, 5, 7

4

2 6

31 75

Page 10: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Caminhamento Pós-ordemCaminhamento Pós-ordem Percorrer a sub-árvore esquerda em pós-ordemPercorrer a sub-árvore esquerda em pós-ordem Percorrer a sub-árvore direita em pós-ordem Percorrer a sub-árvore direita em pós-ordem Visitar a raizVisitar a raiz

Percurso: 1, 3, 2, 5, 7, 6, 4Percurso: 1, 3, 2, 5, 7, 6, 4

4

2 6

31 75

Page 11: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Caminhamento Em-ordemCaminhamento Em-ordem Percorrer a sub-árvore esquerda em pré-ordemPercorrer a sub-árvore esquerda em pré-ordem Visitar a raizVisitar a raiz Percorrer a sub-árvore direita em pré-ordemPercorrer a sub-árvore direita em pré-ordem

Percurso: 1, 2, 3, 4, 5, 6, 7Percurso: 1, 2, 3, 4, 5, 6, 7

4

2 6

31 75

Page 12: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Caminhamento Em NívelCaminhamento Em Nível Percorre-se a árvore em nível de cima Percorre-se a árvore em nível de cima

para baixo e da esquerda para a direita.para baixo e da esquerda para a direita.

Percurso: 4, 2, 6, 1, 3, 5, 7Percurso: 4, 2, 6, 1, 3, 5, 7

4

2 6

31 75

Page 13: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Estrutura de dados de uma Árvore Estrutura de dados de uma Árvore BináriaBinária

4

2 6

31 75

4

2 6

1 3 5 7

null

Referência à sub-árvore da esquerda ou null quando não há filhos

Referência à sub-árvore da esquerda ou null quando não há filhos

Referência à sub-árvore da direitaou null quando não há filhos

Referência à sub-árvore da direitaou null quando não há filhos

ChaveChave

Muitas implementações referenciam o pai no nó

Page 14: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Classe Representando o Nó Classe Representando o Nó public class BSTNode { protected int key; protected BSTNode left, right;

public BSTNode() { left = right = null; } public BSTNode(int num) { this(num,null,null); } public BSTNode(int num, BSTNode lt,

BSTNode rt) { this.key = num; left = lt; right = rt; } public int getKey() {

return key; } public void setKey(int key) {

this.key = key; }

public BSTNode getLeft() {return left;

}public void setLeft(BSTNode left) {

this.left = left;}public BSTNode getRight() {

return right;}public void setRight(BSTNode right) {

this.right = right;} }

Page 15: Árvores Binárias Prof. Ernesto Lindstaedt. Definições Uma árvore binária T é um conjunto finito de elementos denominados nós ou vértices, tal que: Uma

Classe Representando a Árvore Classe Representando a Árvore BináriaBinária

public class BST { private BSTNode root = null;

public BST() { } public void clear() { root = null; } public boolean isEmpty() { return root == null; } public BSTNode getRootNode (){ return root; }