problemas trab final
DESCRIPTION
IHCTRANSCRIPT
4.25 Reconstruir un rbol binario con los siguientes recorridos Preorden: 10 20 30 50 60 40 70 80 90Inorden: 50 30 60 20 80 70 90 40 10Tomando como raz el primer elemento del recorrido preorden y buscando a las ramas izquierda y derecha en el recorrido inorden como vemos en el cuadro es la rama izquierdaPreorden: 10 20 30 50 60 40 70 80 90Inorden: 50 30 60 20 80 70 90 40 10Despus vemos el hijo izquierdo y analizamos sus hijos respectivos.
Preorden: 10 20 30 50 60 40 70 80 90Inorden: 50 30 60 20 80 70 90 40 10Los hijos vendran a ser en este caso 30 y 40 y cada uno con sus hijos de acuerdo al inorden lo mismo asemos con los nmeros 80 70 90 como se ve en la figura.
/**Ejercicio 4.6: pgina 164 * Retorna true si los dos arboles son isomorfos, caso contrario retorna false * @param ar1 - arbol a analizar * @param ar2 - arbol a analizar * @return */public static boolean isomorfosArbin(Arbin ar1, Arbin ar2){if (vacioArbin(ar1) && vacioArbin(ar2)) //llegan al un ultimo nivel(una hoja) y ya no hay nada mas que analizarreturn true;
else if(vacioArbin(ar1) && !vacioArbin(ar2) || !vacioArbin(ar1) && vacioArbin(ar2))// si unode ellos tiene mas niveles que el otroreturn false;
elsereturn !vacioArbin(ar1) && !vacioArbin(ar2) &&//las raices tienen que ser iguales y...isomorfosArbin(ar1.izq, ar2.izq) && //los hijos izq's tienen que ser iguales y...isomorfosArbin(ar1.der, ar2.der); //los hijos der's tienes que ser iguales}
/** * Retorna true si el primer arbol, esta incluido en el segundo, si hubiera elementos repetidos * la cantidad de repeticiones del elemento debe ser igual en cada arbol, caso contrario retorna false * @param ar1 - arbol supuesto incluido en ar2 * @param ar2 - arbol supuesto contenedor de ar1 * @return */public static boolean incluidoConRepeticionArbin(Arbin ar1, Arbin ar2){if(vacioArbin(ar1))return true;
elsereturn estaArbin(ar2, raizArbin(ar1)) &&ocurre(ar2, raizArbin(ar1)) == ocurre(ar1, raizArbin(ar1))&&//en ambos arboles existen la misma cantidad de ocurrencias de un elementoincluidoArbin(izqArbin(ar1), ar2) &&incluidoArbin(derArbin(ar1), ar2);}}
public class ArbolBinarioOrdenado {private NodoArbolNario raiz=null;public class NodoArbolNario{private T elem;private Lista hijos;}
//--Cantidad de nodos hoja del arbol N 5.31 pagina 256 asteriscopublic int contarHojas(){return (raiz!=null) ? raiz.contarHojas() : 0;}public int contarHojas(){if(esHoja())return 1;else{int numHojas=0;for(int i=0;i