Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Arboles PosOrden Iterativo (https://www.clubdelphi.com/foros/showthread.php?t=90432)

pipofede 07-06-2016 15:15:26

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 :D

Desde ya muchas gracias

Saludos Fede!


La franja horaria es GMT +2. Ahora son las 18:34:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi