一.基本思想
二叉搜索树是指左右子树均小于它根结点的值,且没有键值的结点
二.复杂度分析
和二分查找一样,插入和查找的时间复杂度均为O(logn),但在最坏的情况下仍然有O(n)的时间复杂度(原因在于在插入和删除元素的时候树没有保持平衡,这也是平衡查找树设计的初衷)
性质:若按中序遍历,可以得到它由小到大的序列
三. 代码实现
public class BinaryTree { //创建结点类 public static class Node { Object data; Node parent; Node left; Node right; //类节点构造函数 public Node(Object data, Node parent, Node left, Node right) { this.data = data; this.parent = parent; this.left = left; this.right = right; } //重写equals方法 public boolean equals(Object object){ if(this == object){ return true; } if(object instanceof Node){ Node target = (Node)object; return data.equals(target.data)&&left==target.left &&right == target.right&&parent == target.parent; } return false; } } private Node root; public BinaryTree(){ root = null; } public BinaryTree(int o){ root = new Node(o, null, null, null); } //根据指定元素找到该节点 public Node getNode(Object element){ Node current = root; int cmp = 0; do{ cmp = element.equalsTo(current.data); if(cmp > 0){ current = current.right; }else if(cmp < 0){ current = current.left; }else{ break; } }while(current != null); return current; } }