CLRS2e读书笔记—红黑树

红黑树一种构建容器库时经常使用的数据结构(如std::map),其构成比较复杂,很难随手写出。所以正常情况下,我们会使用skiplist代替之。

红黑树是一种特殊的平衡二叉查找树,它在普通二叉查找树的基础上添加了一个储存位来表示结点的颜色(Red or Black),红黑树确保没有一条路径会比其他路径长出两倍,因而是接近平衡的。

红黑性质:

①black or red;

②root is always black;

③leaf is always black;

④if a node is red,two sons must both be black;

Every simple path from a given node to any of its descendant leaves contains the same number of black nodes.

定义哨兵为NIL,所有叶节点指向哨兵结点。

定义从某个节点出发到达叶节点的高度为bh(x),称为该节点的黑高度。

红黑树的高度至多为2lg(n+1)。

红黑树指针结构的修改是通过特殊操作“旋转”来完成的。

代码部分待补充。

posted @ 2012-09-25 21:18  生无所息  阅读(238)  评论(0编辑  收藏  举报