110
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);

Embed Size (px)

Citation preview

Page 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);

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

Page 2: 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);

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

Page 3: 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);

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

Page 4: 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);

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

Page 5: 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);

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

Page 6: 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);

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

Page 7: 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);

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

Page 8: 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);

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

Page 9: 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);

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

Page 10: 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);

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”

Page 11: 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);

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

Page 12: 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);

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

Page 13: 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);

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

Page 14: 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);

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

Page 15: 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);

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

Page 16: 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);

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

Page 17: 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);

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

Page 18: 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);

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

Page 19: 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);

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

Page 20: 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);

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

Page 21: 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);

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

Page 22: 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);

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

Page 23: 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);

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

Page 24: 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);

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

Page 25: 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);

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

Page 26: 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);

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

Page 27: 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);

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

Page 28: 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);

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

Page 29: 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);

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

Page 30: 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);

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

/

Page 31: 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);

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

//

Page 32: 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);

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

//

Page 33: 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);

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

//

Page 34: 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);

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

//

Page 35: 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);

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

//

/

Page 36: 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);

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

/

/

Page 37: 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);

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

/

/

Page 38: 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);

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

/

/

Page 39: 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);

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

/

/

Page 40: 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);

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

/

/

Page 41: 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);

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

/

Page 42: 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);

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

/

Page 43: 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);

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

/

Page 44: 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);

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

/

Page 45: 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);

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

Page 46: 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);

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

Page 47: 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);

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

Page 48: 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);

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

Page 49: 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);

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

/

Page 50: 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);

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

/

/

Page 51: 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);

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

/

/

Page 52: 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);

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

/

/

Page 53: 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);

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

/

/

Page 54: 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);

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

/

/

/

Page 55: 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);

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

/

/

Page 56: 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);

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

/

/

Page 57: 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);

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

/

/

/

Page 58: 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);

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

/

/

Page 59: 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);

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

/

/

Page 60: 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);

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

/

Page 61: 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);

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

/

Page 62: 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);

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

/

Page 63: 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);

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

/

Page 64: 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);

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

Page 65: 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);

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

Page 66: 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);

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

Page 67: 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);

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

Page 68: 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);

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

Page 69: 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);

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

Page 70: 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);

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

Page 71: 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);

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

Page 72: 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);

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

Page 73: 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);

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

Page 74: 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);

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

Page 75: 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);

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

Page 76: 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);

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

Page 77: 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);

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

/

Page 78: 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);

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

/

/

Page 79: 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);

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

/

/

Page 80: 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);

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

/

/

Page 81: 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);

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

/

/

Page 82: 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);

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

/

/

/

Page 83: 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);

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

/

/

Page 84: 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);

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

/

/

Page 85: 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);

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

/

/

Page 86: 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);

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

/

/

Page 87: 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);

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

/

/

Page 88: 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);

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

/

Page 89: 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);

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

/

Page 90: 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);

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

/

Page 91: 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);

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

/

Page 92: 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);

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

Page 93: 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);

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

Page 94: 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);

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

Page 95: 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);

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

Page 96: 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);

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

/

Page 97: 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);

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

//

Page 98: 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);

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

//

Page 99: 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);

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

//

Page 100: 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);

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

//

Page 101: 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);

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

//

/

Page 102: 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);

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

/

/

Page 103: 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);

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

/

/

Page 104: 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);

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

/

/

Page 105: 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);

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

/

/

Page 106: 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);

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

/

/

Page 107: 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);

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

/

Page 108: 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);

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

/

Page 109: 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);

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

/

Page 110: 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);

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