HashMap红黑树( 四 )

root = rotateLeft(root, xpp);

这个方法,这里又有意思了,前方继续高能,即将发生左旋。

注意,这里传入的两个值为root和xpp,这一次两者指向同一个节点。

看下这个方法的详细代码

r指向了p的右节点,此时肯定不为空(参照带有红圆圈的那张图)即此时

r指向了节点2。

先来看第一个判断:

if ((rl = p.right = r.left) != null)

此时r的左节点肯定为空,则可以看出p的右节点此时不在指向r,而是指向了空节点,此时如下图所示:节点1跟右节点断开,节点1的右节点指向为空。

此时r的left则为空,第一个if不满足。

if ((pp = r.parent = p.parent) == null)

p此时指向的是根节点,所以parent肯定为空,条件满足,

推荐阅读