Advertisement
Guest User

Mejor no? :D

a guest
Apr 25th, 2016
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. PROCEDURE BuscarCamino (l: Lista; a: Binario): Indicaciones;
  2. (* Precondicion: 'a' esta ordenado, como arbol binario de busqueda, segun el
  3.    dato de texto.
  4.    Devuelve una secuencia de indicaciones a seguir para recorrer el camino
  5.    de 'a' (si existe) desde la raiz hasta una hoja, que tiene emparejamiento
  6.    de texto con 'l'.
  7.    Decimos que hay un emparejamiento de texto entre un camino en un arbol y una
  8.    lista si, al recorrer ambos y en cada paso, el dato de texto del elemento del
  9.    camino es igual al dato de texto del elemento de la lista.
  10.    Si no hay camino, el campo cantidad debe ser 0.
  11.    En otro caso, cantidad debe ser la cantidad de nodos del camino
  12.    (longitud de 'l') y desde indicaciones[1] hasta indicaciones[cantidad - 1]
  13.    deben estar las indicaciones que determinan el camino, empezando desde la
  14.    raiz. *)
  15.  
  16.    PROCEDURE CaminosNodo(pos: Posicion; l: Lista; a: Binario; VAR i: Indicaciones; derecho: BOOLEAN);
  17.    BEGIN    
  18.       IF a # NIL AND EsPosicionLista(pos)
  19.          IF TextoInfo(InfoLista(pos, l)) == TextoInfo(a^.info)) THEN
  20.             IF pos != InicioLista(l) THEN
  21.                i.cantidad := i.cantidad + 1;
  22.                IF derecho THEN
  23.                   i.indicaciones[i.cantidad] := DER;
  24.                ELSE
  25.                   i.indicaciones[i.cantidad] := IZQ;
  26.                END;
  27.             END;
  28.             IF EsHoja(a) AND EsFinalLista(pos, l) THEN
  29.                 i.existe = TRUE;
  30.             ELSE
  31.                CaminosNodo(Siguiente(pos, l), l, a^.derecho, i, TRUE);
  32.                CaminosNodo(Siguiente(pos, l), l, a^.izquierdo, i, FALSE);
  33.             END;
  34.          END;
  35.       END;
  36.    END BuscarCamino;
  37.  
  38. VAR
  39.    i : Indicaciones;
  40. BEGIN
  41.  
  42.    i.existe = FALSE;
  43.    CaminosNodo(InicioLista(l), l, a, i, TRUE);
  44.    RETURN i;
  45.  
  46. END BuscarCamino;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement