0%

红黑树

红黑树是一种自平衡二叉树查找树,是一种常用的数据结构。在jdk1.8中,TreeMap、TreeSet和HashMap都使用到了红黑树。

二叉排序树

性质

  • 左子节点的值小于父节点的值
  • 右子节点的值大于父节点的值
  • 任意节点的左右子树也是一个二叉排序树

时间复杂度

在理想的情况下,时间复杂度为 O(logN)
极端情况下(树为一链表),时间复杂度为 O(N)

红黑树

红黑树从本质上来说也是一颗二叉查找树,但是在二叉树的基础上增加了着色相关的性质,使得红黑树可以保证相对平衡,从而保证红黑树的增删改查的时间复杂度最坏也能达到O(log N)。

性质

  • 节点是红色或黑色
  • 根节点是黑的
  • 叶子节点是黑的空节点
  • 如果一个节点是红的,他的两个儿子节点都是黑的
  • 对于任一节点而言,其到叶节点树尾端NIL指针的每一条路径都包含相同数目的黑节点

插入

  • 按二叉查找树的算法,将目标结点插入;
  • 把目标结点设置为当前结点,并把它着红色;
  • 这时可能违背红黑树的性质,所以,进行修正;

左旋和右旋

旋转时,不能改变节点的左右关系。

其他资料

https://blog.csdn.net/for_tech/article/details/78300704