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;
}
}