Índice > Árvore > Árvore Binária > Resolução de Exercícios - Percurso

Instituto de Ciências Matemáticas de São Carlos
Departamento de Computação e Estatística
SCE182 - Algoritmos e Estruturas de Dados 1
Profs. Resp.: Graça Pimentel e Maria Cristina

Resolução de Exercícios - Percurso

1) Escrever o algoritmo de visita em Pré-Ordem utilizando alocação dinâmica mas sem utilizar procedimentos recursivos. Utilizar pilha para saber o endereço da subárvore que resta à direita.

  Var A: array[1..max] of Pno; { qual o valor de max ????}
      pont, raiz:Pno;
      topo: 0..max;

  Begin
    topo:=0;
    pont:=raiz;
    acabou:=(raiz=nil);
    While not acabou do
      Begin
        While pont <> nil do
          Begin
            Processa(pont^.info);
            topo:=topo+1;
            A[topo]:=pont;
            Pont:=pont^.esq;
          End;
        If (topo <> 0) Then
          Begin
            pont:=A[topo]^.dir;
            topo:=topo-1;
          End
        Else acabou:=true;
      End;
  End;

2) Escrever uma função recursiva que calcule a altura de uma árvore binária dada. A altura de uma árvore é igual ao máximo nível de seus nós.

  Function h(r:Pno):integer;
  Var altE,
      altD: integer;
  Begin
    If r=nil Then
      h:=0
    Else
      Begin
        altE:=h(r^.esq);
        altD:=h(r^.dir);
        h:=max(altE, altD) + 1;
      End;
  End;


Árvore Binária