红黑树的思想

红黑树也是平衡二叉搜索树的一种,红黑树可能产生不平衡状态(高度相差1以上),但是红黑树的搜索效率与AVL树基本相等。


1.红黑树性质:

红黑树必须满足以下四个规则:

a)每个节点不是红色就是黑色

b)根节点必须是黑色

c)如果节点为红色,其子节点必须为黑色

d)任何一个节点至NULL的任何路径,所含的黑节点树必须相同


*为了方便通常使Null节点为黑


2.插入节点的情况讨论

根据红黑树的性质4,新插入节点必定为红色节点(确保不会新增黑节点造成树的不平衡),此时分为以下两种情况:


1)插入节点的父节点为黑色:此时符合红黑树的性质要求,直接插入即可


2)插入节点的父节点为红色:此时祖父节点将为黑色(因为不能有连续的红色),将有两种情况:

2.1)若其伯父节点为红色:则直接将其父节点与伯父节点改为黑色,将其祖父节点该为红色,并向上回溯,检查其祖父节点是否符合红黑树性质

2.2)若其伯父节点为黑色:则需要再分两种情况讨论:

2.2.1)若该节点为祖父节点的外侧节点(如:父节点位于祖父的左节点,子节点位于父节点的左节点):则单旋并使父节点为黑色,祖父节点为红色。

2.2.2)若该节点为祖父节点的内侧节点(如:父节点位于祖父的左节点,子节点位于父节点的右节点):则双旋并改变颜色

    原文作者:算法小白
    原文地址: https://blog.csdn.net/Virtual_Func/article/details/48897395
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞