失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > HashMap底层实现原理:红黑树左旋右旋

HashMap底层实现原理:红黑树左旋右旋

时间:2020-02-26 02:56:04

相关推荐

HashMap底层实现原理:红黑树左旋右旋

HashMap中的红黑树左旋、右旋:

一、什么是左旋、右旋:

红黑树的性质:

每个节点要么是黑色,要么是红色根节点是黑色每个叶子节点(NIL)是黑色每个红色结点的两个子结点一定都是黑色任意一结点到每个叶子结点的路径都包含数量相同的黑结点

每当对红黑树结点进行增删改的时候可能会破坏红黑树的性质,因此我们需要维持这5条性质。有三种方式:变色、左旋、右旋.变色简单,本文会根据HashMap的源码分析左旋和右旋

1)左旋

以结点p作为支点进行左旋,其左子结点不变,右子结点变为p的右子节点的左子结点,且p的父结点变为左子结点。

支点为p,其父结点为pp,右子结点和左子结点为r和l,r的左右孩子分别为rl和rr。则示意图如下:

2)右旋

以结点p作为支点右旋,其右子结点不变,左子结点变为其左子结点的右子结点,且p的父结点变为右子结点。

如图所示:

二、HashMap对左旋右旋的实现

(1)左旋

源码如下

//root为根节点,p为旋转的结点static <K,V> TreeNode<K,V> rotateLeft(TreeNode<K,V> root,TreeNode<K,V> p) {TreeNode<</

如果觉得《HashMap底层实现原理:红黑树左旋右旋》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。