数据结构红黑树添加、修改原理分析

2022-10-20  本文已影响0人  隔壁小新

源码分析大纲

数据结构解析

1.红黑树
红黑树图形
1.1 红黑树概念

红黑树(Red Black Tree) 是一种自平衡二叉查找树,
红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。它与AVL树之间的区别:AVL树必须通过多次旋转后达到平衡,而红黑树可以通过旋转或者变色从而保持平衡。

1.2 红黑树的特性

1. 节点为黑色或红色
2. 根节点为黑色
3. 每个叶子节点都是黑色的空节点(NIL) [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
4. 每个红色节点的两个孩子节点都是黑色(保证从每个叶子到根的所有路径上不能有两个连续的红色节点
5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点(保证了红黑树从根到叶子的最长路径不会超过最短路径的两倍)

红黑树图片
红黑树模拟生成地址
1.3 红黑树保持平衡方式(旋转、变色)

左旋转


左旋图

以1为节点进行左旋,1往下3节点往上走,3节点的左节点变成1,3的原来左节点挂到1的右节点上,形成左旋。

右旋


右旋图

以3节点为中心进行右旋,3节点往下走,1节点提上,1节点的右节点变为3节点,1节点的原先右节点挂到3节点的右节点上,旋转完毕。

变色
安装红黑树五条规定进行操作。

1.4 红黑树的插入(当前节点默认为红色)
1.5红黑树删除问题分析。
上一篇下一篇

猜你喜欢

热点阅读