1 / 17

Aula 06 – 05/04

Aula 06 – 05/04 . Árvores binárias. É 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. Exemplo de uma árvores binária No raiz é 8

jered
Télécharger la présentation

Aula 06 – 05/04

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 • Subarvoreesquerda iniciando nó 3 e a subarvoredireta iniciando no nó 10. • Nós folha 1, 4, 7 e 13

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

  5. 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.

  6. Exemplo de inserção

  7. Algoritmo procedureTForm2.Inserir( AEstado:TEstado;varAItem: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; endelse begin // A o campo para ordenação é o nome if ( AEstado.Codigo<AItem.Valor.Codigo ) then Inserir(AEstado,AItem.NoEsquerda) elseif ( AEstado.Codigo>AItem.Valor.Codigo ) then Inserir(AEstado,AItem.NoDireta) else raiseException.Create('Não é permitido item duplicado'); end; end;

  8. 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.

  9. Exemplo de pesquisa

  10. Algoritmo procedureTForm2.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; endelse begin if( (StrToInt( EdtCodigo.Text )) <AItem.Valor.Codigo ) then Buscar( AItem.NoEsquerda ) elseif((StrToInt( EdtCodigo.Text )) >AItem.Valor.Codigo ) then Buscar( AItem.NoDireta ) end; end; end;

  11. 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.

  12. 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.

  13. 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.

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

  15. Prática – Pré ordem procedureTForm2.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;

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

More Related