1 二叉查找树定义(查找最好时间复杂度O(logN),最坏时间复杂度O(N))
在二叉查找树中:
(01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(03) 任意节点的左、右子树也分别为二叉查找树。
(04) 没有键值相等的节点
2 具体代码流程
节点结构
public class BiTreeNode {
private Object data;
private BiTreeNode lchild, rchild;
public BiTreeNode() {
this(null);
}
public BiTreeNode(Object data) {
this(data, null, null);
}
public BiTreeNode(Object data, BiTreeNode lchild, BiTreeNode rchild) {
this.data = data;
this.lchild = lchild;
this.rchild = rchild;
}
public Object getData() {
return data;
}
public BiTreeNode getLchild() {
return lchild;
}
public BiTreeNode getRchild() {
return rchild;
}
public void setData(Object data) {
this.data = data;
}
public void setLchild(BiTreeNode lchild) {
this.lchild = lchild;
}
public void setRchild(BiTreeNode rchild) {
this.rchild = rchild;
}
}
头结点(这个类其实可以不需要直接定义在上面那个类一个root静态变量就可以)
public class BiTree {
public BiTreeNode root;
private static int index = 0;
public BiTree(){
this.root = null;
}
public BiTree(BiTreeNode root){
this.root = root;
}
public BiTreeNode getRoot() {
return root;
}
public void setRoot(BiTreeNode root) {