赞
踩
红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示结点的颜色,可以是RED或BLACK。通过对任意一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因此近似于平衡的。
红黑树中每个结点包含了5个属性:color,key,left,right和 p。如果一个结点没有子结点或父结点,则该结点响应指针属性的值为空,我们可以将这些空指针作为执行二叉搜索树的叶子节点或外部结点的指针,而把带关键字的结点视为树的内部结点。
一棵红黑树是满足下面红黑性质的二叉搜索树:
注:有性质4可得,如果一个结点存在黑色的子结点,那么该结点肯定有两个子节点。
左旋:以某节点P作为旋转结点,其右子结点V成为旋转结点P的父结点,右子结点V的左子结点R成为旋转结点的右子结点,左子结点X保持不变。
右旋:同样以某节点P作为旋转结点,其左子结点F成为旋转结点P的父结点,左子节点F的右子结点K成为旋转结点P的左子结点,右子树V保持不变。
由此可见旋转操作是局部的,同时,当一边子树的结点少了,那么将另一边子树的结点移过来;当一边子树多了,那么就会将一些结点移向另一边。
变色:结点的颜色右红色变黑或者是右黑变红。
由此可见红黑树总是通过旋转和变色使得树结构达到平衡状态。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。