Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROCEDURE NumeroNodoIgualLista(l: Lista; a: Binario): BOOLEAN;
- BEGIN
- IF (NumeroInfo(InfoLista(InicioLista(l), l)) = NumeroInfo(a^.info)) THEN
- RETURN TRUE;
- ELSE
- RETURN FALSE;
- END;
- END NumeroNodoIgualLista;
- PROCEDURE BuscarCamino(pos: Posicion; l: Lista; a: Binario): CARDINAL;
- VAR caminos: CARDINAL;
- BEGIN
- caminos := 0;
- IF EsHoja(a) AND EsFinalLista(pos, l) THEN
- caminos := 1;
- ELSIF TieneHijoIzquierdo(a) AND TieneHijoDerecho(a) THEN
- caminos := BuscarCamino(Siguiente(pos, l), l, a^.derecho);
- caminos := caminos + BuscarCamino(Siguiente(pos, l), l, a^.izquierdo);
- ELSIF TieneHijoDerecho(a) AND NumeroNodoIgualLista(l, a^.derecho) THEN
- caminos := BuscarCamino(Siguiente(pos, l), l, a^.derecho);
- ELSIF TieneHijoIzquierdo(a) AND NumeroNodoIgualLista(l, a^.izquierdo) THEN
- caminos := BuscarCamino(Siguiente(pos, l), l, a^.izquierdo);
- END;
- RETURN caminos;
- END BuscarCamino;
- PROCEDURE CantidadCaminos (l: Lista; a: Binario): CARDINAL;
- (* Devuelve la cantidad de caminos de 'a', desde la raiz hasta una hoja, que
- tienen emparejamiento numerico con 'l'.
- Decimos que hay una emparejamiento numerico entre un camino en un arbol y
- una lista si, al recorrer ambos y en cada paso, el dato numerico del
- elemento del camino es igual al dato numerico del elemento de la lista. *)
- VAR caminos: CARDINAL;
- BEGIN
- caminos := 0;
- IF NumeroNodoIgualLista(l, a) THEN
- caminos := BuscarCamino(InicioLista(l), l, a);
- END;
- RETURN caminos;
- END CantidadCaminos;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement