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;
}
}
Comparas ambos con el de la izquierda
if(tree.hasLeft(w) && w.element().compareTo(tree.left(w).element())>0)
// compareTo(tree.left(w)
Cita de: kingcreek en 13 Diciembre 2016, 23:40 PM
Comparas ambos con el de la izquierda
if(tree.hasLeft(w) && w.element().compareTo(tree.left(w).element())>0)
// compareTo(tree.left(w)
Muchas gracias, justo era eso me di cuenta y ya me daba todo bien 👍