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;