之前我们有介绍高级数据结构中的BST树与AVL树:
《C++高级数据结构算法 | Binary Search Tree(二叉查找树)》
《C++高级数据结构算法 | AVL(自平衡二叉查找树)》
但是,即使AVL树拥有平衡特性,但它是通过其不断的旋转操作来实现的,最坏情况下将每回溯一层都要进行旋转调整。即数据量大了以后,AVL树的旋转操作就拖慢了插入和删除的时间。
为此引入了红黑树,它具有良好的旋转次数,不至于影响结点插入和删除的时间效率。
红黑树的概念与重要性质
红黑树是一种近似平衡的二叉查找树,它能够确保任何一个节点的左右子树的高度差不会超过二者中较低子树的一倍。具体来说,红黑树是满足如下条件的二叉查找树(Binary Search Tree):
- 性质1 : 每一个节点是要么是红色要么是黑色
- 性质2 : 根节点必须是黑色
- 性质3 :叶子节点都是黑色(指叶子节点的地址域null为黑色,一般null节点默认