package org.coding.one;
@SuppressWarnings( {"unchecked", "rawtypes"})
public class BinaryTreeNode {
private Comparable data;
private BinaryTreeNode left;
private BinaryTreeNode right;
public BinaryTreeNode(Comparable data, BinaryTreeNode left, BinaryTreeNode right) {
super();
this.data = data;
this.left = left;
this.right = right;
}
public Object getData() {
return data;
}
public void setData(Comparable data) {
this.data = data;
}
public BinaryTreeNode getLeft() {
return left;
}
public void setLeft(BinaryTreeNode left) {
this.left = left;
}
public BinaryTreeNode getRight() {
return right;
}
public void setRight(BinaryTreeNode right) {
this.right = right;
}
public BinaryTreeNode insert(Comparable val){
return doInsert(this, val);
}
private BinaryTreeNode doInsert(BinaryTreeNode node, Comparable val) {
if(node == null) {
return null;
}
if(val.compareTo(node.data) == 0) {
return node;
}
if(val.compareTo(node.data) > 0) {
if(node.right == null) {
BinaryTreeNode rightNode = new BinaryTreeNode(val, null, null);
node.right = rightNode;
return rightNode;
}
return doInsert(node.right, val);
} else {
if(node.left == null) {
BinaryTreeNode leftNode = new BinaryTreeNode(val, null, null);
node.left = leftNode;
return leftNode;
}
return doInsert(node.left, val);
}
}
}