目录
性质
红黑树是一棵二叉搜索树,它在每个节点增加了一个存储位记录节点的颜色,可以是RED,也可以是BLACK;通过任意一条从根到叶子简单路径上颜色的约束,红黑树保证最长路径不超过最短路径的二倍,因而近似平衡。
具体性质如下:
- 每个节点颜色不是黑色,就是红色
- 根节点是黑色的
- 如果一个节点是红色,那么它的两个子节点就是黑色的(没有连续的红节点)
- 对于每个节点,从该节点到其后代叶节点的简单路径上,均包含相同数目的黑色节点
当满足以上性质时,就能保证最长路径不超过最短路径的二倍。
红黑树与AVL树的区别
- AVL树比红黑树更加平衡,AVL是完全平衡的(平衡就是值树中任意节点的左子树和右子树高度差不超过1)。
- 红黑树效率更高,因为AVL为了保证其完全平衡,插入和删除的时候在最坏的情况下要旋转logN次,而红黑树插入(最多2次)和删除(最多3次)的旋转次数要比AVL少。
- 如果应用程序涉及许多频繁的插入和删除操作,则应首选红黑树。如果插入和删除操作的频率较低,而搜索操作的频率较高,则AVL树应优先于红黑树。
插入
红黑树插入节点过程大致分析:
- RBTree为二叉搜索树,我们按照二叉搜索树的方法对其进行节点插入
- RBTree有颜色约束性质,因此我们在插入新节点之后要进行颜色调整