红黑树、2-3树

版权声明:版权声明:本文为博主原创文章,转载时请注明出处——作者:冰怜 https://blog.csdn.net/xiaoxin0630/article/details/87890243

红黑树与2-3树的等价性

所有的红色节点都是左倾斜的

我的理解是红色是融合的

红黑树与2-3树是等价下,我们看图片 比较一下

红色节点是不是融合和在左边

算法导论中的红黑树的理解

红黑树是保持"黑平衡"的二叉树

严格意义上,不是平衡二叉树 最大高度2logn O(logn)

红合数

2-3树

满足二分树的基本性质

节点可以存放一个元素或者两个元素

左边a是和二叉树一样的结构 左节点存放小于a的值,右边存放大于a的值

右边的b、c是两个元素 左边存放小于b、c的值、中间存放b、c之间的值、右边存放大于b、c的值

2-3树如何维持绝对的平衡

永远不回去空节点,只会去融合

添加节点的两种情况

父节点为2-节点

零时的四节点,然后往下拆分为二分树,然后在向上融合

最后就是往上融合

父亲节点为3-节点

红黑树添加元素

添加66,红颜色代表融合元素

他们不是融合元素,变为黑色,但是还要往跟节点融合,所以42要变为红色

这种条件不需要选择,直接颜色旋转就行

   //颜色翻转
   private void flipColor(Node node){
	   
	   node.color=RED;
	   node.left.color=BLACK;
	   node.right.color=BLACK;
   }

另一种情况,需要选择

因为需要平衡,所以右旋转

然后颜色进行翻转

        //    node                        x
	//    /   \     右旋转         		/  \
	//   x   T2   --------->       Y   node
	//  / \              		  	   /   \
	// y  T1             			  T1   T3
   	public Node rightRotate(Node node){
   		
   		Node x=node.left;
   		
   		//右旋转
   		node.left=x.right;
   		x.right=node;
   		
   		x.color=node.color;
   		node.color=RED;
   		
   		return x;
   	}
//  node                      x
   //  /   \     左旋转         		/  \
   // T1   x   --------->    node   T3
   //     / \              	/   \
   //    T2 T3             T1   T2
   private Node leftRotate(Node node){

       Node x = node.right;

       // 左旋转
       node.right = x.left;
       x.left = node;

       x.color = node.color;
       node.color = RED;

       return x;
   }

   //颜色翻转
   private void flipColor(Node node){
	   
	   node.color=RED;
	   node.left.color=BLACK;
	   node.right.color=BLACK;
   }
   
	//    node                        x
	//    /   \     右旋转         		/  \
	//   x   T2   --------->       Y   node
	//  / \              		  	   /   \
	// y  T1             			  T1   T3
   	public Node rightRotate(Node node){
   		
   		Node x=node.left;
   		
   		//右旋转
   		node.left=x.right;
   		x.right=node;
   		
   		x.color=node.color;
   		node.color=RED;
   		
   		return x;
   	}

猜你喜欢

转载自blog.csdn.net/xiaoxin0630/article/details/87890243
今日推荐