首页 > 代码库 > (3) 二叉查找树(二叉搜索树)

(3) 二叉查找树(二叉搜索树)

一.什么是二叉查找树?

二叉查找树, 或者是一个空树, 或者是具有如下性质的二叉树:

 (1).若它的左子树不空,则其左子树上的所有结点的值均小于它根结点的值;

 (2).若它的右子树不空,则其右子树上的所有结点的值均大于它根结点的值;

 (3).它的左、右子树也分别为二叉查找树。

下图就是一颗二叉查找树

技术分享

 

 

 

 

 

 

 

 

二叉查找树是具有特殊性质的二叉树, 其节点数据结构定义如下:

package searchTree;

/**
 * Created by xinfengyao on 16-12-28.
 */
public class BinaryNode<T> {
    T data;
    BinaryNode<T> left;
    BinaryNode<T> right;

    public BinaryNode() {

    }

    public BinaryNode(T data) {
        this(data, null, null);
    }

    public BinaryNode(T data, BinaryNode<T> left, BinaryNode<T> right) {
        this.data =http://www.mamicode.com/ data;
        this.left = left;
        this.right = right;
    }
}

 

二.树操作

明白了什么是二叉查找树, 那么二叉查找树的基本操作又该如何实现呢?

1.查找操作

  在二叉查找树中, 查找节点x的过程如下:

  (1). 若二叉树是空树, 则查找失败

  (2). 若x等于根节点的数据, 则查找成功, 否则.

  (3) 若x小于根节点的数据, 则递归查找其左子树, 否则

  (4). 递归查找其右子树.

根据上述步骤, 就可以写出二叉查找树的查找操作的代码:(后续添加...)

 

2.插入操作

  二叉查找树b插入x的过程如下:

  (1).若b是空树, 则直接将插入的节点作为根节点插入

  (2).若x等于根节点的数据的值, 则直接返回, 否则

  (3).若x小于根节点数据的值, 则将x要插入的节点的位置改为b的左子树, 否则

  (4).将x要插入节点的位置, 改为b的右子树.

根据上述步骤,写出二叉查找树的插入操作代码:(后续添加...)

3.删除操作

(3) 二叉查找树(二叉搜索树)