二叉查找树与平衡查找树

首先说明一下二叉查找树的概念:
二叉查找树 或者是一棵空树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有节点的值均小于它的根节点的值;
(2)若右子树不空,则右子树上所有节点的值均大于它的根节点的值;
(3)左、右子树也分别为二叉查找树;
(4)没有键值相等的节点。
由二叉查找树的概念可以看到,二叉查找树的典型特征是每个结点的值都大于其左子树中的任意结点的值而小于其右子树中的任意结点的值,其好处是在查找某个值时比较次数有望达到对数级别。因此二叉查找树中各结点的值有一定的规律,为了维持这个规律,二叉查找树在插入新结点,删除其中的节点等操作时,有一些需要注意的地方。二叉查找树相关操作:查找、插入和删除等操作具体实现代码可参看《算法(第四版)》3.2节。
通过分析二叉查找树相关操作的代码可以看出,二叉查找树的各种操作算法运行时间取决于树的形状,也就是取决于树高。在最好情况下,一棵含有N个结点的树是完全平衡的,每条空链接和根结点的距离都为~lgN。但在最坏情况下,搜索路径上可能有N个结点。

为了保证查找树的平衡性,我们需要一些灵活性,因此我们允许树中的一个结点保存多个键,由此2-3查找树诞生了,下面还是先介绍一下2-3查找树的概念:
一棵 2-3查找树 或为一棵空树,或由以下结点组成:
(1)2-结点,含有一个键(及其对应的值)和两条链接,左链接指向的2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。
(2)3-结点,含有两个键(及其对应的值)和三条链接,左链接指向的2-3树中的键都小于该结点,中链接指向的2-3树中的键都位于该结点的两个键之间,右链接指向的2-3树中的键都大于该结点。
我们将指向一棵空树的链接称为空链接。
由2-3树的特点,2-3树比二叉查找树更加展平,我们可以确定2-3树在最坏情况下仍有较好的性能。

红黑树 (红黑二叉查找树)就是实现2-3树的一种方法,红黑树的基本思想就是用标准的二叉查找树(完全由2-结点构成)来表示2-3树。而为了表示2-3树中的3-结点,引入了红链接的概念,由一条红色左链接相连的两个2-结点表示一个3-结点(两个2-结点其中之一是另一个的左子结点),而黑链接则就是2-3树中的普通链接。
红黑树的另一种定义是含有红黑链接并满足下列条件的二叉查找树:
1.红链接均为左链接;
2.没有任何一个结点同时和两条红链接相连;
3.该树是完美黑色平衡的,即任意空链接到根结点的路径上的黑链接数量相同。
满足这样定义的红黑树和相应的2-3树是一一对应的。
在红黑树中有三种基本操作:左旋转、右旋转和颜色转换。红黑树中的插入操作都可以由这三种基本操作解决,具体说明和代码参看《算法(第四版)》3.3节。
红黑树的这些特点都是为了一个目的,实现完美平衡,尽量缩小树高,这样就能保证操作的运行时间为对数级别(最坏情况下也是对数级别)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值