Przeszukuję drzewo, aby znaleźć wartość, która została przekazana. Niestety, to nie działa. Rozpocząłem debugowanie go za pomocą odbitek, a co dziwne, faktycznie znajduje wartość, ale pomija instrukcję return.Przechylanie drzewa w celu znalezienia węzła
/**
* 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
}
To wypisuje wyniki w następujący sposób:
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)
nie wiem, czy to pomoże, ale tutaj jest moje drzewo:
L
/ \
D R
/\ /\
A F M U
\ /\
B T V
Dzięki za poświęcony czas.
rzeczywiście trzeba zwrócić go tylko wtedy, gdy nie jest zerowa – Thirler
@Thirler, masz rację. –
, więc zwracam obie te instrukcje, ale nadal otrzymuję wskaźnik pusty z następującym wynikiem: lewy, lewy, prawy, zerowy błąd zatrzymuje się na prawym węźle, ale wydaje się zwracać wartość pustą, gdy znajdzie ... – JavaFail