您的位置:首页 > 其它

二叉查找树

2014-06-27 15:52 169 查看
1. 引入

以顺序表作为存储结构的查找算法中,二分查找效率最高。但二分查找要求表按关键字有序,且不能用链表作存储结构,因此,当表的插入或删除操作频繁时,为维护表的有序性,势必要移动表中很多结点。这种由移动结点引起的额外时间开销,就会抵消二分查找的优点。也就是说,二分查找只适用于静态查找表。若要进行高效率的查找与删除操作,可采用动态查找表作为存储结构,如二叉查找树(Binary Search Tree)。

2. 二叉查找树定义

二叉查找树又称二叉排序树,定义为:二叉查找树或者是空树,或者是满足如下性质的二叉树:

①若它的左子树非空,则左子树上所有结点的值均小于根结点的值;

②若它的右子树非空,则右子树上所有结点的值均大于根结点的值;

③左、右子树本身又各是一棵二叉查找树。

3. 特点

1) 对二叉查找树进行查找、插入、删除操作的时间复杂度为O(h),其中h为二叉查找树的高度;

2) 随机构造的二叉查找树的的期望高度为O(logn)。

3) 若建构二叉查找树的输入序列有序,则得到的二叉查找树的高度将为O(n),进行基本操作的时间复杂度也为O(n)。

4) 中序遍历二叉查找树可得递增有序序列,时间复杂度为O(n),其中n为二叉查找树中结点数。所以,用二叉查找树的方法对序列进行排序,平均时间复杂度为O(n*logn),最坏情况为

。(注意:与快速排序复杂度是一样的)。

4. 操作

1) 结构定义





2) 初始化



3) 销毁



4) 最小值



5) 最大值



6) 查找:分为递归和非递归版本



7) 插入



8) 删除

分3中情况:待删除结点为叶子结点;待删除结点有左孩子或又孩子;待删除结点有两个孩子。



9) 中序遍历

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉查找树 排序