package data2_19; public class BinaryTreeNode implements Comparable<BinaryTreeNode>{ private Object data; private BinaryTreeNode left; private BinaryTreeNode right; public BinaryTreeNode(Object o) { this.data = o; } 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; } @Override public int compareTo(BinaryTreeNode o) { return (this.data.hashCode() < o.data.hashCode()) ? -1 : ((this.data.hashCode() == o.data.hashCode()) ? 0 : 1); } public BinaryTreeNode insert(Object o){ BinaryTreeNode node = new BinaryTreeNode(o); insertNode(this,node); return node; } private void insertNode(BinaryTreeNode parentNode, BinaryTreeNode node) { //父节点大于添加元素 if(parentNode.compareTo(node) == 1){ if(parentNode.left == null){ parentNode.left = node; return; } insertNode(parentNode.left, node); } //父节点小于添加元素 else if(parentNode.compareTo(node) == -1){ if(parentNode.right == null){ parentNode.right = node; return; } insertNode(parentNode.right, node); }else{ throw new RuntimeException("No duplicate vertex allowed!"); } } public static void main(String[] args) { BinaryTreeNode tree = new BinaryTreeNode(5); tree.insert(2); tree.insert(23); tree.insert(7); tree.insert(1); } }