Advertisement
Guest User

Medio larga... lo mejor que se me ocurrio en el momento :|

a guest
Apr 24th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. PROCEDURE NumeroNodoIgualLista(l: Lista; a: Binario): BOOLEAN;
  2.    BEGIN
  3.       IF (NumeroInfo(InfoLista(InicioLista(l), l)) = NumeroInfo(a^.info)) THEN
  4.          RETURN TRUE;
  5.       ELSE
  6.          RETURN FALSE;
  7.       END;
  8.    END NumeroNodoIgualLista;
  9.  
  10.    PROCEDURE BuscarCamino(pos: Posicion; l: Lista; a: Binario): CARDINAL;
  11.    VAR caminos: CARDINAL;
  12.    BEGIN    
  13.       caminos := 0;
  14.       IF EsHoja(a) AND EsFinalLista(pos, l) THEN
  15.          caminos := 1;
  16.       ELSIF TieneHijoIzquierdo(a) AND TieneHijoDerecho(a) THEN
  17.          caminos := BuscarCamino(Siguiente(pos, l), l, a^.derecho);
  18.          caminos := caminos + BuscarCamino(Siguiente(pos, l), l, a^.izquierdo);
  19.       ELSIF TieneHijoDerecho(a) AND NumeroNodoIgualLista(l, a^.derecho) THEN
  20.          caminos := BuscarCamino(Siguiente(pos, l), l, a^.derecho);
  21.       ELSIF TieneHijoIzquierdo(a) AND NumeroNodoIgualLista(l, a^.izquierdo) THEN
  22.          caminos := BuscarCamino(Siguiente(pos, l), l, a^.izquierdo);
  23.       END;
  24.       RETURN caminos;
  25.    END BuscarCamino;
  26.  
  27. PROCEDURE CantidadCaminos (l: Lista; a: Binario): CARDINAL;
  28. (* Devuelve la cantidad de caminos de 'a', desde la raiz hasta una hoja, que
  29.    tienen emparejamiento numerico con 'l'.
  30.    Decimos que hay una emparejamiento numerico entre un camino en un arbol y
  31.    una lista si, al recorrer ambos y en cada paso, el dato numerico del
  32.    elemento del camino es igual al dato numerico del elemento de la lista. *)
  33. VAR caminos: CARDINAL;
  34. BEGIN
  35.  
  36.    caminos := 0;
  37.    IF NumeroNodoIgualLista(l, a) THEN
  38.       caminos := BuscarCamino(InicioLista(l), l, a);
  39.    END;
  40.    RETURN caminos;
  41.  
  42. END CantidadCaminos;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement