Foro de elhacker.net

Programación => Java => Mensaje iniciado por: pabelsbf en 13 Diciembre 2016, 21:58 pm



Título: Arbol binario
Publicado por: pabelsbf en 13 Diciembre 2016, 21:58 pm
Buenas a todos, tengo que hacer un método, que dándole un árbol binario con elementos enteros dentro de los nodos, me devuelva true, si para cada nodo, sus dos hijos (el de la izquierda y la derecha) son mayores o iguales que el nodo, y false en caso contrario.

Ejemplo: nodo= 7 Hijoderecho=7, Hijo izquierdo=8 (devuelve true)
             nodo =7 Hijoderecho=8, Hijo izquierdo=5 (devuelve false)

el código que tengo es este, pero no me llega a funcionar bien, creo que no me recorre el árbol entero, porque me devuelve true en casos que debería dar false.

public class HeapOrderChecker {

public static <E extends Comparable<E>> boolean satisfiesHeapOrderProperty (BinaryTree<E> tree) {

      boolean res=true;

      for(Position<E> w: tree.children(tree.root())){

         if(tree.hasLeft(w) && w.element().compareTo(tree.left(w).element())>0){
               return false;
            }
         

         if(tree.hasRight(w)&& w.element().compareTo(tree.left(w).element())>0){
            
               return false;
            }
      }
      return res;
   }
}


Título: Re: Arbol binario
Publicado por: kingcreek en 13 Diciembre 2016, 23:40 pm
Comparas ambos con el de la izquierda

Código
  1. if(tree.hasLeft(w) && w.element().compareTo(tree.left(w).element())>0)
  2.  
  3. // compareTo(tree.left(w)
  4.  


Título: Re: Arbol binario
Publicado por: pabelsbf en 14 Diciembre 2016, 01:20 am
Comparas ambos con el de la izquierda

Código
  1. if(tree.hasLeft(w) && w.element().compareTo(tree.left(w).element())>0)
  2.  
  3. // compareTo(tree.left(w)
  4.  

Muchas gracias, justo era eso me di cuenta y ya me daba todo bien 👍