数据结构
常见的数据结构
数据结构常见的存储结构有栈、队列、数组、链表、红黑树(二叉树)。下面对红黑树简单总结一下。
红黑树
简介
红黑树,英文名为Red-Black Tree ,是一种特殊的二叉查找树(Binary Search Tree) 红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。
红黑树的性质
1.节点可以是红色的或者黑色的
2.根节点必须是黑色的
3.叶子节点必须是黑色的,当然这里的叶子节点指的是那些为NULL的叶子节点。
4.每个红色节点的子节点必须是黑色的
5.从每个叶子到根的所有路径上不能有两个连续的红色节点
6.从一个节点到它的每一个叶子节点的所有路径上含有相同数量的黑色节点
红黑树的优点
- 特性6确保没有一条路径会比其他路径长出俩倍 ,也就是说从根节点到最远的叶节点的距离不可能超过从根节点到叶节点的距离的两倍。
- 红黑树的高度最多为 log(n + 1),n 为节点个数
- 插入和删除在最坏的情况下为 O(logn)
- 速度特别快,趋近平衡树,查找叶子元素最少和最多次数不多于二倍
红黑树图型
红黑树图形介绍
图中最顶端的为根节点(黑色),最底层的红色节点为叶子节点,叶子节点是没有子节点的。从根节点到最底层节点之间的高度层数称为深度,因为所有路径上不能连续有两个红色节点,所以当一个节点为红色时,其子节点必须得是黑色的,如图中,不存在俩个连续的红色节点。
红黑树的操作
红黑树和二叉树有相同的操作,有插入节点、删除节点、遍历节点,除此以外插入节点、删除节点时还需要对节点来赋值是红色还是黑色,需要根据红黑树中相邻两节点是否为连续红色节点,对红黑树的形状进行调节,需要将节点进行左旋转或是右旋转,需要对破坏红黑树平衡进行修正。