//����ο��ԡ����ݽṹ���㷨������ 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; } private BinaryTreeNode parrent; private BinaryTreeNode hot; //��ʾsearch(Object o)�������ص����нڵ�ĸ��� public BinaryTreeNode(Object o, BinaryTreeNode p) { data = o; parrent = p; } //����vΪ���Ķ������в��ҹؼ���o���������еĽڵ㣨��ʵ���ڵû���������ڵģ� public static BinaryTreeNode search(BinaryTreeNode v, Object o, BinaryTreeNode hot) { int vData = (int)v.getData(); int searched = (int)o; if (v == null || vData == searched) return v; hot = v; return search(searched < vData ? v.getLeft() : v.getRight(), o, hot); } public BinaryTreeNode insert(Object o){ BinaryTreeNode node = search(this, o, this.parrent); if (node != null) return node; node = new BinaryTreeNode(o, hot); if ((int)o < (int)hot.getData()) hot.setLeft(node); else hot.setRight(node); return node; } }