红黑树
1. 定义
首先来理解红黑树可以用来解决什么问题:普通的二叉搜索树在作为数据存储工具的时候,具有可以快速找到一个给定关键字的数据项,并且可以快速地插入和删除数据项等优点。其中,二叉搜索树只有当插入的数据是随机数据,插入可快速进行。但当插入的数值是有序的时候,二叉树就会变成非平衡的二叉树,那么它的快速查找、插入、删除指定数据项的能力就消失了。红黑树就可以解决非平衡树的问题,他可以被理解为是一种增加了某些特点的二叉搜索树。
维基百科中对红黑树的定义为:红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。
2. 红黑树性质
一个红黑树具有以下五个性质:
1:节点是红色或黑色。
2:根是黑色。
3:所有叶子都是黑色(叶子是NIL节点)。NIL元素是指每个叶节点都有两个空的,颜色为黑的NIL元素,需要他的时候就可以把它看成两个黑色的元素,不需要的时候可以忽视他
4:每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
5:从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。
3. 红黑树的基本操作
红黑树的基本操作和其他树形结构一样,一般都包括查找、插入、删除等操作,但红黑树额外还有旋转以及改变节点颜色等操作。这是因为向红黑树中插入或者删除节点后,红黑树就发生了变化,就会导致树无法满足红黑树的5个性