procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
aq
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
O módulo Visita(q) simplesmente executaráWriteln(q^.dado);
exibindo, portanto, o conteúdo do nó apontado pelo “ponteiro de trabalho”
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
4
A B D E C F G
//
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
4
A B D E C F G
//
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
4
A B D E C F G
//
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
4
A B D E C F G
//
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
4
A B D E C F G
//
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
3
A B D E C F G
/
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
//
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
//
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
//
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
//
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
2
A B D E C F G
//
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
1
A B D E C F G
/
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
/
procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P); if q <> nil then begin Visita(q); Empilhar(P,q^.dir); Empilhar(P,q^.esq); end; end; end;
Visão esquemática da memória
a
topo elem
P
q
0
A B D E C F G
/
saída do laço e finalização
do módulo...