package cn.net.pikachu.basic; public class BinaryTreeNode { 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){ if (!(o instanceof Comparable)){ throw new ClassCastException(o.toString()); } // 根据节点大小放置元素 小的在左边 大的在右边 Comparable c = (Comparable) o; if (data==null){ data=o; return this; }else if (c.compareTo(o)>0){ if (left==null){ left=new BinaryTreeNode(); } return left.insert(o); }else { if (right==null){ right=new BinaryTreeNode(); } return right.insert(o); } } public void inOrderTraversal(Visit visit,BinaryTreeNode node){ if (node.left!=null) inOrderTraversal(visit,node.left); if (node!=null) visit.visit(node.data); if (node.right!=null) inOrderTraversal(visit,node.right); } public static interface Visit{ public void visit(Object o); } }