如何实现C语言中的红黑树数据结构?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3174个文字,预计阅读时间需要13分钟。
目录
一、什么是红黑树
二、红黑树的约定
三、红黑树 vs AVL
四、红黑树的实际实现
1. 找到插入的位置 2. 控制平衡 3. 测试代码五、完整代码
1. test.c 2. RBTree.h目录
- 一、什么是红黑树
- 二、红黑树的约定
- 三、红黑树vsAVL
- 四、红黑树的实现
- 1.找到插入的位置
- 2.控制平衡
- 3.测试代码
- 五、完整代码
- 1.test.c
- 2.RBTree.h
一、什么是红黑树
红黑树在表意上就是一棵每个节点带有颜色的二叉搜索树,并通过对节点颜色的控制,使该二叉搜索树达到尽量平衡的状态。所谓尽量平衡的状态就是:红黑树确保没有一条路径比其他路径长两倍。
和AVL树不同的是,AVL树是一棵平衡树,而红黑树可能平衡也可能不平衡(因为是尽量平衡的状态)
二、红黑树的约定
要实现一棵红黑树,即要红黑树确保没有一条路径比其他路径长两倍。通过对节点颜色的约定来实现这一目标。
1.根节点是黑色的。
2.如果一个节点是红色的,则它的两个孩子都是黑色的。
3.对于每个节点,从该节点到其所有后代节点的简单路径上,均包含相同数量的黑色节点。
本文共计3174个文字,预计阅读时间需要13分钟。
目录
一、什么是红黑树
二、红黑树的约定
三、红黑树 vs AVL
四、红黑树的实际实现
1. 找到插入的位置 2. 控制平衡 3. 测试代码五、完整代码
1. test.c 2. RBTree.h目录
- 一、什么是红黑树
- 二、红黑树的约定
- 三、红黑树vsAVL
- 四、红黑树的实现
- 1.找到插入的位置
- 2.控制平衡
- 3.测试代码
- 五、完整代码
- 1.test.c
- 2.RBTree.h
一、什么是红黑树
红黑树在表意上就是一棵每个节点带有颜色的二叉搜索树,并通过对节点颜色的控制,使该二叉搜索树达到尽量平衡的状态。所谓尽量平衡的状态就是:红黑树确保没有一条路径比其他路径长两倍。
和AVL树不同的是,AVL树是一棵平衡树,而红黑树可能平衡也可能不平衡(因为是尽量平衡的状态)
二、红黑树的约定
要实现一棵红黑树,即要红黑树确保没有一条路径比其他路径长两倍。通过对节点颜色的约定来实现这一目标。
1.根节点是黑色的。
2.如果一个节点是红色的,则它的两个孩子都是黑色的。
3.对于每个节点,从该节点到其所有后代节点的简单路径上,均包含相同数量的黑色节点。

