lionel chang

导航

linux内核中红黑树

一.红黑树的定义

一颗红黑树必须满足以下几点:

1.树的节点要么是红色,要么是黑色。

2.根结点一定是黑色

3.所有叶子节点都是黑色的。(注意,红黑树的叶子节点是NULL节点)

4.每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)

5.从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。

以上几点保证了红黑树的关键性质:从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。从而,保证了红黑树是平衡的。

二.旋转、插入、删除

在红黑树进行了插入、删除操作后,要保证红黑树仍然是平衡的,必须对相应的节点进行旋转。

关于旋转请参考王哲的博客基于树的查找--------------红黑树(0),或者直接看《算法导论》的相关章节。

三.内核中红黑树的定义

内核中关于红黑树的文件,分别位于lib/rbtree.c和include/linux/rbtree.h中

<未完>



posted on 2012-08-19 18:12  woshizyl  阅读(185)  评论(0编辑  收藏  举报