1) Percurso In-Ordem
A chamada é feita com N apontando raiz
Procedure InOrdem(N:PNo);
Begin
If N<>nil Then
Begin
InOrdem(N^.esq);
write(N);
InOrdem(N^.dir);
End;
End;
2) Percurso Pós-Ordem
A chamada é feita com t apontando raiz, use a mesma árvore acima
Procedure Tornar_Vazia(var t: tree);
Begin
If not vazia(t) Then
Begin
Tornar_Vazia(t^.esq);
Tornar_Vazia(t^.dir);
dispose(t);
End;
t:=nil;
End;
3) Altura de uma árvore
Use a mesma árvore acima. A chamada é feita com r apontando raiz.
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;
4) Nível de um nó pesquisado
A chamada é feita com r apontando raiz e item contendo E.
Function Nivel(t: tree; item: Telem):integer;
Var p:integer;
Procedure Travessia(ptr:tree; niv:integer);
Begin
If ptr<>nil Then
Begin
niv:=niv+1;
If igual(ptr^.item, item) Then
p:=niv;
Else
Begin
Travessia(ptr^.esq, niv);
If p=0 Then
Travessia(ptr^.dir, niv);
End;
End;
End;
Begin {Nivel}
p:=0;
Travessia(t,p);
nivel:=p;
End;
5) Busca em ABB com sentinela
Use a árvore binária de busca dado abaixo. A chamada é feita com raiz apontando raiz e x contendo 22.
Function Busca(x:Tchave; raiz:Pno):Pno;
Var achou: boolean;
p: PNo;
Begin
p:=raiz;
sentinela^.chave:=x;
While p^.chave <>x do
If p^.chave < x Then
p:=p^.dir
Else p:=p^.esq;
Busca:=p;
End;
Árvore Binária