当前位置:   article > 正文

探秘红黑树_红黑树右结点可以是红色的吗

红黑树右结点可以是红色的吗

一 概述

红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示结点的颜色,可以是RED或BLACK。通过对任意一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因此近似于平衡的。

红黑树中每个结点包含了5个属性:color,key,left,right和 p。如果一个结点没有子结点或父结点,则该结点响应指针属性的值为空,我们可以将这些空指针作为执行二叉搜索树的叶子节点或外部结点的指针,而把带关键字的结点视为树的内部结点。

二 红黑树的性质

一棵红黑树是满足下面红黑性质的二叉搜索树:

  1. 红黑树中的每个结点或是红色,或是黑色,根节点一定是黑色。
  2. 红黑树中的每个为NIL的叶子结点(不存在父节点和子节点也称为外部节点)都是黑色的。
  3. 红黑树中任意一个红色结点的父结点和子节点都不能为红色结点。
  4. 红黑树中的每个结点,从该结点到其所有后代叶子结点的简单路径上,均包含相同数目的黑色结点。

注:有性质4可得,如果一个结点存在黑色的子结点,那么该结点肯定有两个子节点。

三 红黑树的左旋,右旋和变色

左旋:以某节点P作为旋转结点,其右子结点V成为旋转结点P的父结点,右子结点V的左子结点R成为旋转结点的右子结点,左子结点X保持不变。

右旋:同样以某节点P作为旋转结点,其左子结点F成为旋转结点P的父结点,左子节点F的右子结点K成为旋转结点P的左子结点,右子树V保持不变。

由此可见旋转操作是局部的,同时,当一边子树的结点少了,那么将另一边子树的结点移过来;当一边子树多了,那么就会将一些结点移向另一边。

变色:结点的颜色右红色变黑或者是右黑变红。

由此可见红黑树总是通过旋转和变色使得树结构达到平衡状态。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/218507
推荐阅读
相关标签
  

闽ICP备14008679号