package com.coding.basic;
public class BinaryTreeNode implements Comparable<BinaryTreeNode> {
public BinaryTreeNode(Object data) {
this.data = data;
}
private Object data;
private BinaryTreeNode left;
private BinaryTreeNode right;
public Object getData() {
return data;
}
public void setData(Object 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(Object o) {
//左子节点的值永远比父节点的值小
//右子节点的值永远比父节点的值大
BinaryTreeNode node = new BinaryTreeNode(o);
insertNode(node);
return node;
}
private void insertNode(BinaryTreeNode node){
insertNode(this,node);
}
private void insertNode(BinaryTreeNode parentNode, BinaryTreeNode node) {
if (parentNode.compareTo(node) <= 0) {//数字大于父节点
if (parentNode.right == null) {
parentNode.right = node;
return;
}
insertNode(parentNode.right, node);
} else {
if (parentNode.left == null) {
parentNode.left = node;
return;
}
insertNode(parentNode.left, node);
}
}
@Override
public int compareTo(BinaryTreeNode o) {
Integer i = (Integer) this.data;
return i.compareTo((Integer) o.data);
}
}