Ver Mensaje Individual
  #1  
Antiguo 07-06-2016
pipofede pipofede is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 1
Reputación: 0
pipofede Va por buen camino
Question Arboles PosOrden Iterativo

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;//Apuntadar a nodo
    X:TipoElemento//Registro con varios campos//
Begin
   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!

Última edición por Casimiro Notevi fecha: 07-06-2016 a las 17:46:07.
Responder Con Cita