package com.coding.basic.container;
public class BinaryTreeNode<T extends Comparable> {
private T data;
private BinaryTreeNode left;
private BinaryTreeNode right;
private BinaryTreeNode root;
public BinaryTreeNode(T data, BinaryTreeNode left, BinaryTreeNode right) {
this.data = data;
this.left = left;
this.right = right;
}
public T getData() {
return data;
}
public void setData(T 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(T o) {
if (null == root) {
root = new BinaryTreeNode(o, null, null);
return root;
}
return insert(o, root);
}
public BinaryTreeNode insert(T o, BinaryTreeNode node) {
BinaryTreeNode nodeNew = new BinaryTreeNode<Comparable>(o, null, null);
BinaryTreeNode nodeCurrent = node;
if (o.compareTo(nodeCurrent.data) < 0) {
if (nodeCurrent.left == null) {
nodeCurrent.left = nodeNew;
return nodeNew;
} else {
return insert(o, nodeCurrent.left);
}
} else if (o.compareTo(nodeCurrent.data) > 0) {
if (nodeCurrent.right == null) {
nodeCurrent.right = nodeNew;
return nodeNew;
} else {
return insert(o, nodeCurrent.right);
}
} else {
return nodeCurrent;
}
}
}