A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡超 中级黑马   /  2013-12-15 15:59  /  1271 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

红黑树在原有的排序二叉树上增加了如下几个要求:1.每个节点要么是红色,要么是黑色。
2.根节点永远为黑色。
3.所有的叶子节点都是空节点(即null),并且是黑色的。
4.每个红色节点的两个子节点都是黑色的。(从每个叶子到根的路径上不会有两个连续的红色节点)
5.从任一节点到其子树中每个叶子节点的路径都包含相同数量的黑色节点。

上面的第三点中指出红黑树的每个叶子节点都是空节点,而且叶子节点都是黑色,但是java实现的红黑树将使用null来代表空节点,因此遍历红黑树时将看不到黑色的叶子节点,反而看到每个叶子节点都是红色的。

根据第五点,红黑树从根节点到每个叶子节点的路径都包含相同数量的黑色节点,因此从根节点到叶子节点的路径中包含的黑色节点数被称为数的“黑色高度(Black -height)”。

第四点则保证了从根节点到叶子节点的最长路径的长度不会超过其他路径的2倍。因此,红黑树中最长的路径就是一条红黑交替的路径。

由此可以得出结论:对于给定的黑色高度为N的红黑树,丛根到叶子节点的最短路径长度为N-1,最长路径长度为2*(N-1)。

评分

参与人数 1黑马币 +3 收起 理由
胡永城 + 3 赞一个!

查看全部评分

1 个回复

倒序浏览
有长见识了,+3
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马