Je cherche dans un arbre pour trouver une valeur qui est passée. Malheureusement ça ne marche pas. J'ai commencé à le déboguer avec des impressions, et ce qui est bizarre, c'est qu'il trouve la valeur, mais ignore l'instruction return.Traversée d'un arbre pour trouver un nœud
/**
* Returns the node with the passed value
*/
private TreeNode searchNodeBeingDeleted(Comparable c, TreeNode node)
{
if(node == null)
{
return null;
}
if(c.equals((Comparable)node.getValue()))
{
System.out.println("Here");
return node;
}
else
{
if(node.getLeft() != null)
{
System.out.println("left");
searchNodeBeingDeleted(c, node.getLeft());
}
if(node.getRight() != null)
{
System.out.println("right");
searchNodeBeingDeleted(c, node.getRight());
}
}
return null; //i think this gives me my null pointer at bottom
}
Il imprime les résultats comme suit:
left
left
right
right
Here
right
left
right
left
right
Exception in thread "main" java.lang.NullPointerException
at Program_14.Driver.main(Driver.java:29)
Je ne sais pas si cela va aider, mais voici mon arbre:
L
/ \
D R
/\ /\
A F M U
\ /\
B T V
Merci pour votre temps.
en fait, vous devez le retourner que si elle est non nulle – Thirler
@Thirler, vous avez raison. –
donc je retourne ces deux instructions, mais je reçois toujours le pointeur nul avec la sortie suivante: gauche, gauche, droite, erreur nulle il s'arrête au bon noeud, mais semble retourner nulle quand il le trouve ... – JavaFail