红黑树-RBT(一、红黑树定义以及简介)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
红⿊树-RBT(⼀、红⿊树定义以及简介)
⼀、红⿊树
1、介绍:红⿊树是⼀种⼆叉查找树,但在每个节点上增加⼀个存储位表⽰节点的颜⾊,可以是red或black。
通过对任何⼀条从根到叶⼦的路径上的各个节点着⾊⽅式的限制,红⿊树确保没有⼀条路径会⽐其他路径长出两倍,因⽽是接近平衡的。
2、定义:它或者是⼀颗空树,或者是具有⼀下性质的⼆叉查找树
1):每个节点或是红的,或是⿊的。
2):根节点是⿊的。
3):每个叶节点(NIL)是⿊的。
(所有NULL结点称为叶⼦节点,且认为颜⾊为⿊)
4):如果⼀个节点是红的,则他的两个⼦节点是⿊的。
5):对每个节点,从该节点到其⼦孙节点的所有路径上包含相同数⽬的⿊节点。
3、结构:树中的每个节点上包含五个域:color、key、left、right、p。
如果其节点没有⼀个⼦节点或者⽗节点,则该节点相应的指针(p)域包含值NIL。
我们把这些NIL视为指向⼆叉查找树的外节点,⽽把带关键字的节点是为树的内节点。
4、⾼度:⼀颗有n个内节点的红⿊树的⾼⾄多为2lg(n+1)。
5、应⽤:Java集合中的和,C++ STL中的set、map,以及Linux虚拟内存的管理,都是通过红⿊树去实现的。
。