树结构Tree

树结构

平衡顺序二叉树

通过平衡顺序二叉树查数据的时候,也就等同于二分查找的操作 Binary Search

平衡顺序二叉树

案例

2,3树 二三树

二三树有 node2 和 node3 两种节点,树的规则如图

2,3树

2-3-4树

2-3-4树

以下内容参考自: ~ 红黑树的介绍以及原理

2-3-4树到红黑树的转化
红黑树是对概念模型2-3-4树的一种实现,由于直接进行不同节点间的转化会造成较大的开销,所以选择以二叉树为基础,在二叉树的属性中加入一个颜色属性来表示2-3-4树中不同的节点。

2-3-4树中的2节点对应着红黑树中的黑色节点,而2-3-4树中的非2节点是以红节点+黑节点的方式存在,红节点的意义是与黑色父节点结合,表达着2-3-4树中的3,4节点。

(此处理解成红节点也好,红色链接也好,看个人喜好。很多书中会说是由黑色节点指出的红色链接,链接指向的节点颜色为红。)

我们先看2-3-4树到红黑树的节点转换。2节点直接转化为黑色节点;3节点这里可以有两种表现形式,左倾红节点或者右倾红节点。而4节点被强制要求转化为一个黑父带着左右两个红色儿子

2-3-4树到红黑树的转换

本文的研究主体是2-3树(原因会在后文给出),并且是2-3树中较为特殊的一种转化--左倾红黑树。顾名思义,左倾红黑树限制了如果在树中出现了红色节点,那么这个节点必须是左儿子。

以下是它的转化过程:

2-3树到红黑树的转换

光看单个节点的转化可能还不够明显,我制作了一张红黑树转2-3树的示意图,很清晰地描绘了它们之间的关系。

只要把左倾红黑树中的红色节点顺时针方向旋转45°使其与黑父平行,然后再将它们看作一个整体,你就会发现,这不就是一颗2-3树吗?

2-3树到红黑树的转换2

至此,我想大家已经明白,红黑树其实就是对概念模型2-3树(或者2-3-4树)的一种实现。

算法导论中给出的是红黑树基于2-3-4树实现,其中4节点要求平衡(即4节点必须用黑色父亲和左右两个红色儿子表示,红色儿子不能出现在同一边)。

算法4中给出的红黑树是基于2-3树实现,而且这种实现的红黑树十分特殊,它要求概念模型中的3节点在红黑树中必须用左倾的红色节点来表示。这种限定能够很大的减少红黑树调整过程中的复杂性,我们将在接下来的内容中体会到这一点。

posted @   没有烦恼的猫猫  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示