I am trying to write my own binary tree and I have problems with insertion. The values in tree are duplicated. I have inner static class Node with “Node right,left and int value” fields and outer class BinaryTree with one field – Node root.
The code of insertion:
public void insert(int number) {
if (root.isEmpty())
root.value = number;
else {
Node node = root;
insert(number, node);
}
}
private void insert(int number, Node node) {
if (number < node.value && node.left != null) {
node = node.left;
insert(number, node);
} else {
if (node.left == null)
node.left = new Node(null, null, number);
}
if (number > node.value && node.right != null) {
node = node.right;
insert(number, node);
} else {
if (node.right == null)
node.right = new Node(null, null, number);
}
}
What i am doing wrong?
Suppose you have a node called X as root.
You are inserting some number
Now it goes in the next if statement
node is equal to Y now and has no children. So node.right==null. So the number is reinserted as Y’s right child.
SO there exists a copy of the number. Solve it using return.