数学与计算机结合学习红黑二叉树 定义定理篇(开篇)

该篇作为红黑二叉树学习的开篇

红黑二叉树在查询二叉树的基础上针对增删改查引入了节点颜色的概念,该概念的引入使得二叉树最大深度与最小深度差有了有效的限定,优化了数据结构。

红黑二叉树定义(二叉树的部分不再赘述)

1. 针对颜色的定义:每个节点要么是红色的要么是黑色的

2. 针对颜色的限制:不能存在子节点和父节点同时为红色(该条与第4条一起有效的限制了树的最大最小深度差)

3. 根节点限制:根节点颜色为黑色(该条的作用暂时还没理解,可能有利于与增删变化吧)

4. 黑色节点数相同的限制:根节点到任意度不为2(度为0和度为1)的节点包含的黑色节点数相同(这条在理解证明阶段我更喜欢这样子描述,有利于我后续的思路。为了后续计数方便,“从根节点到度不为2的节点包含的黑色节点数”这句话中实际计数时不包含根节点)

(在编程中给没有节点的子节点位置赋值null后,可能更适合描述为:根节点到null节点所经过的黑色节点数相同,null标志更有利于编程中判断)


----------------------------------------------------------------------------------------------------------------------------------

为了方便后续描述,定义一些名词变量

扫描二维码关注公众号,回复: 2958764 查看本文章

名词及变量说明:

blen: 在定义第4点中根节点到任意度不为2的节点包含的黑色节点数相同,这个数记为 blen(不计算第一个节点即根节点,计算最后一个节点)

blen(a,b):表示节点a到b包含的黑色节点数目(节点a是b的若干级上级节点)(不计算a节点,计算b节点)

blen(a):表示根节点到节点a包含的黑色节点数目(不计算根节点,计算a节点)

(x!n):表示度不为n(n取0、1、2)的节点

(x=n):表示度为n(n取0、1、2)的节点

度:节点a度为0表示节点a有0个子节点及节点a是叶子节点,节点a度为1表示节点a有1个子节点,节点a度为2表示节点a有2个子节点


----------------------------------------------------------------------------------------------------------------------------------

为了实现红黑二叉树,利用数学思想,针对上述定义,我先整理出以下几个定理,作为后续的工具:

定理:

1. 红黑二叉树中,在度不为2的黑色节点下添加一个红色子节点,该二叉树仍然为红黑二叉树。

2. 红黑二叉树中,度为1的节点都是黑色节点,即不存在度为1的红色节点。

3. 红黑二叉树中,度为0的红色节点(也即红色叶子节点,定理2中已经证明不存在度为1的红色节点,所以实际就是度不为2的红色节点)的兄弟节点不存在或者为红色节点。 即度为0的红色节点的兄弟节点不可能是黑色节点。



该篇暂先如此,后续继续补充

猜你喜欢

转载自blog.csdn.net/Vincent_Field/article/details/80594812