A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula 06 – 05/04 Árvores binárias.

Apresentações semelhantes


Apresentação em tema: "Aula 06 – 05/04 Árvores binárias."— Transcrição da apresentação:

1 Aula 06 – 05/04 Árvores binárias

2 É um tipo de árvore especial onde cada nó pode ter de 0 a 2 nós descendentes.
Por convenção os nós são chamados de nó da esquerda e nó da direita Dessa forma a árvore binária tem no máximo grau 2.

3 Exemplo de uma árvores binária
No raiz é 8 Subarvore esquerda iniciando nó 3 e a subarvore direta iniciando no nó 10. Nós folha 1, 4, 7 e 13

4

5 Prática - Declarando uma árvores binária
PApontador = ^TItem;   TItem = record     Valor: TEstado;     NoEsquerda: PApontador;     NoDireta: PApontador;   end;

6 Prática – Inserindo um elemento na árvore
Vamos inserir os itens seguindo uma ordem. Se a árvore estiver vazia insere o novo elemento no raiz. Se o item que estiver sendo inserido é menor que a raiz inserimos o item na esquerda. Se o item que estiver sendo inserido é maior que a raiz inserimos o item na direita.

7 Exemplo de inserção

8 Algoritmo procedure TForm2.Inserir( AEstado: TEstado; var AItem: PApontador ); begin if ( AItem = nil ) then begin // Aloca um novo item na memória New( AItem ); AItem.Valor:= AEstado; AItem.NoEsquerda:= nil; AItem.NoDireta:= nil; end else // A o campo para ordenação é o nome if ( AEstado.Codigo < AItem.Valor.Codigo ) then Inserir(AEstado, AItem.NoEsquerda) else if ( AEstado.Codigo > AItem.Valor.Codigo ) then Inserir(AEstado, AItem.NoDireta) else raise Exception.Create('Não é permitido item duplicado'); end; end;

9 Prática – Pesquisando um item na arvore
Percorre a árvore de forma ordenada. Processo eficiente pois temos uma direção a ser percorrida. Verifica se a raiz é igual ao item a ser pesquisado. Se o nó raiz é menor, continua a busca pela esquerda. Se o nó raiz é menor, continua a busca pela direita.

10 Exemplo de pesquisa

11 Algoritmo procedure TForm2.Buscar(AItem: PApontador); begin // Verifica se a lista esta vazia if ( AItem <> nil ) then begin // Encontrou o registro if ( AItem.Valor.Codigo = StrToInt ( EdtCodigo.Text )) then begin EdtSiglaEstado.Text:= AItem.Valor.Sigla; EdtNomeEstado.Text:= AItem.Valor.Nome; end else if ( (StrToInt ( EdtCodigo.Text )) < AItem.Valor.Codigo ) then Buscar( AItem.NoEsquerda ) else if ((StrToInt ( EdtCodigo.Text )) > AItem.Valor.Codigo ) then Buscar( AItem.NoDireta ) end; end; end;

12 Percorrendo árvores binarias
Necessidade de percorrer a arvores de forma sistêmica percorrendo todos os nós da arvore. No caso de uma estrutura de arvores possuir os dados de um produto, teríamos que percorrer todas a arvores para emitir um relatórios dos produtos.

13 Tipos de percurso – Pré ordem
Visita a raiz (executa uma certa operação). Percorre a sub arvore da esquerda. Percorre a sub arvore da direita.

14 Tipos de percurso – Em ordem
Percorre a sub arvore da esquerda. Visita a raiz (executa uma certa operação). Percorre a sub arvore da direita.

15 Tipos de percurso – Pós ordem
Percorre a sub arvore da esquerda. Percorre a sub arvore da direita. Visita a raiz (executa uma certa operação).

16 Prática – Pré ordem procedure TForm2.PreOrdem(AItem: PApontador); begin if ( AItem <> nil ) then begin // Esse nó é o raiz da subarvore ShowMessage( Aitem.Valor.Nome ) PreOrdem( AItem.NoEsquerda ); PreOrdem( AItem.NoDireta ); end; end;

17 Exercícios aula 06 – Exercícios.docx


Carregar ppt "Aula 06 – 05/04 Árvores binárias."

Apresentações semelhantes


Anúncios Google