Título: ayuda para comparar 2 arboles binarios Publicado por: clupin en 29 Diciembre 2013, 13:35 pm Hola, estoy con problemas para comparar 2 arboles binarios, al intentar compararlos, deberia devolverme 0 si son iguales, 1 si son distintos, pero el programa solo me devuelve el lado de la derecha y no compara la izq, espero puedan ayudarme
Código
Título: Re: ayuda para comparar 2 arboles binarios Publicado por: rir3760 en 29 Diciembre 2013, 17:24 pm Cuando tengas una duda o problema con alguno de tus programas por favor indica el lenguaje de programación. En el caso de C ...
deberia devolverme 0 si son iguales, 1 si son distintos Lo usual es devolver verdadero (un valor distinto de cero, usualmente uno) si se cumple la condición y falso (cero) en caso contrario.el programa solo me devuelve el lado de la derecha y no compara la izq Eso sucede porque falta retornar el valor en el caso de que ambos nodos sean diferentes de NULL y con igual valor:Código
Por ultimo se pueden ahorrar algunas comparaciones. Por ejemplo (retornando verdadero si son iguales): Código
Un saludo Título: Re: ayuda para comparar 2 arboles binarios Publicado por: clupin en 29 Diciembre 2013, 17:34 pm Muchas Gracias (por todas las las aclaraciones) :)
Título: Re: ayuda para comparar 2 arboles binarios Publicado por: ivancea96 en 29 Diciembre 2013, 18:32 pm Citar iguales(a->izq, b->izq); iguales(a->der, b->der); Los valores de retorno de cada "iguales" no se guardan en ningún lugar. Código
Título: Re: ayuda para comparar 2 arboles binarios Publicado por: do-while en 30 Diciembre 2013, 10:37 am ¡Buenas!
Si por iguales te refieres a que tienen la misma estructura y los mismos datos en los mismos nodos solo te falta comprobar, como ya te han dicho, si las comparaciones en las distintas ramas te devuelven 0 o 1, y si alguna devuelve 1 ya no tienes que seguir comparando, solo tienes que devolver este valor. En cambio, si por iguales entendemos que aunque la estructura es distinta tienen los mismos datos, tu código no es correcto. Imagina el nodo raíz con valores distintos, de dos árboles con los mismos datos pero con distinta estructura. Cuando llegues a Código a->dato != b->dato, ya que aunque los valores almacenados son los mismos, los valores de los nodos raíz son distintos. Por lo tanto la función devolverá 1 a pesar de que debería devolver 0. Tampoco puedes asegurar que los nodos hoja sean los mismos, ya que has podido introducir los datos en distinto orden y por lo tanto ocuparán posiciones distintas dentro del árbol. Lo que tienes que hacer es un recorrido inorden de cada uno de los dos árboles e ir comparando los valores de los nodos. ¡Saludos! |