Buenos días, disculpen que moleste, pero necesito de su ayuda, ya me estoy enojado que no pueda hacer un simple PosOrden en iterativo. Pero ya estoy bloqueado y me cuesta verlo.
Pongo el código de lo que estoy haciendo para que me guíen un poco. Mi problema esta cuando por el lado izquierdo llego al nulo y quiero ir por el lado derecho.
Código Delphi
[-]Function Oarbol.PosOrdenITERAtivo : String;
Var
S:String;
P:Pila;
Q:PosicionArbol; X:TipoElementoBegin
S:='';
P.Crear;
Q:=A.Root;
While Not(A.RamaNula(Q)) or Not(P.EsVacia) do
Begin
While Not (A.RamaNula(Q)) do
Begin
A.Recuperar(Q,X);
X.DP:=Q;
P.Apilar(X);
Q:=A.HijoIzquierdo(Q);
End;
S:= S +'.' + ' ';
P.Recuperar(X);
Q:=X.DP;
Q:=A.HijoDerecho(Q);
If (A.RamaNula(Q)) then
Begin
S:= S +'.' + ' ';
S := S + X.DS + ' ';
End;
P.DesApilar;
P.Recuperar(X);
Q:=X.DP;
End;
S:= S + '.';
PosOrdenITERAtivo :=S;
End;
PD: Nosotros manejamos un TAD con funciones básicas para árbol, si necesitas saber alguna en particular pongo el código, pero creo que se entiende
Desde ya muchas gracias
Saludos Fede!