I have an assignment and I need some help with a method.
So I have a tree like this:
A
/ \
B C
/ \ / \
D E F G
/ \
H I
/ \
J K
and my method is:
public BinaryTree preorderNext(BinaryTree t, BinaryTree v, BinaryTree prev) {
prev = t;
if(t.getLeft() != null) {
preorderNext(t.getLeft(), v, prev);
}
if(t.getRight() != null) {
preorderNext(t.getRight(), v, prev);
}
if(prev == v) {
return t;
}
return null;
}
The lecturer had given a simple implementation of the tree. The class is called BinaryTree and if you want to make a node link to it then you specify what the right and left child BinaryTree node are.
A node has two links (one to the left and the other to the right child) and there is no link to the head.
So with the current method I am able to successful do a preorder traversal, I tested by writing the print statements of what the element stored at the node is.
But when I run the tests, it tells me that the next preorder node from A is B, and the next preorder node from K throws a null exception but it should be I?
Any ideas of where I am going wrong? The variable prev should hold a reference to the last node visited so if it equals to node v (which is the node I specify, to return the node after v), shouldn't I get the next node?
root
than witht
,v
andprev
. This is because every child of the tree is also a tree itself. – arin