This is an example of a Binary Tree implementation here. This code works ok. But can I create the root as single one-time node in add method.
Instead of
public void add(int value) {
root = addRecursive(root, value);
}
i do
public void add(int value) {
if (root == null) {
root= new Node(value);
}
// then i add left- and right-leafs recursively
if (value < root.value) {
root.left = addRecursive(root, value);
} else if (value > root.value) {
root.right= addRecursive(root, value);
}
}
And if I add 3 or less nodes - that's all right
bt.add(2);
bt.add(1);
bt.add(3);
but if I add more then 3 nodes I get StackOverflow Error because of recursive function
private Node addRecursive(Node current, int value) {
if (current == null) {
return new Node(value);
}
if (value < current.value) {
current.left = addRecursive(current.left, value);
} else if (value > current.value) {
current.right = addRecursive(current.right, value);
}
return current;
}