NaughtySloth NaughtySloth - 1 month ago 19
Java Question

Binary Search Tree recursive add

I'm trying to make a recursive add for my BST. The public add method takes an int argument, the private method takes the same int and a Node. This is the code I have so far

public void add(int i) {

add(i, root);

}

private void add(int i, Node n) {
if (root==null){
root=new Node(i);
}

if (i < n.element) {
if (n.left != null) {
add(i, n.left);
} else {
n.left = new Node(i);
}
} else if (i > n.element) {
if (n.right != null) {
add(i, n.right);
} else {
n.right = new Node(i);
}
}
}


I constanly keep getting null pointers, tried debugging as well but there's something flawed in my logic that I can't see.

Answer

When your tree is empty (root=null), you correctly create a new node and assign it to your root variable. But that's all it should do.
Therefore:

if (root==null){
    root=new Node(i);
    return; // DONE!!
}

Or, if you want:

if (root==null){
    root=new Node(i);
}
else if (i < n.element) {
....
Comments