首页 > 代码库 > 红黑树(学习笔记)

红黑树(学习笔记)

1.为什么要提出红黑树?

   二叉查找树的查找、插入、删除时间复杂度都是O(h),其中h是树的高度。假设二叉查找树的结点个数是n,如果二叉查找树比较平衡,则h=O(log n),如果二叉查找树严重不平衡,那么树的高度h远大于O(log n),则二叉查找树的查找、插入、删除操作的时间复杂度就比较高。

  平衡查找树就是为解决二叉查找树高度h比较大时,查找、插入、删除操作的时间复杂度比较高的问题而提出的数据结构。

   目前为止,我接触到的平衡查找树有:AVL树、B树、红黑树。(其他平衡查找树还有很多)

   1)AVL树:最先发明的自平衡二叉查找树,AVL中任何结点的两个儿子子树的高度最大差为1.

   2)B树:是一种平衡的多叉树。

   3)红黑树:是一种对称的二叉B树。

2.什么是红黑树?

   简单来说,红黑树是一种高度为O(log n)的二叉查找树。

   红黑树中每个节点包括5个域:key(结点值)、color(结点颜色)、p(指向双亲)、left(指向左孩子)、right(指向右孩子)。

   红黑树有5个性质: 

      性质1. 节点是红色或黑色。
  性质2. 根节点是黑色。
  性质3. 每个叶节点(NIL节点,空节点)是黑色的。(注:NIL结点被认为是叶子结点,一般根节点的父节点也会是NIL结点,表示与红黑树的内结点相对的外结点)
  性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
  性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点

 

红黑树(学习笔记)