关于红黑树旋转算法的一点说明

《算法导论》(Thomas H.Cormen等著,潘金贵等译,第二版)书166页的红黑树旋转算法

程序虽然很小,但有一些惯性思维,比如“=”的误认,很难看懂。现对伪代码说明如下:

LEFT-ROTATE(T, x)  
01  y ← right[x]            // x的右孩子为y是左旋的前提,这个条件成立,才会有下面的操作
02  right[x] ← left[y]      // 修改x的right域,将其指向β
03  p[left[y]] ← x          // 让β的父亲域指向x
04  p[y] ← p[x]             // 让y的父亲域指向x的父亲
05  if p[x] = nil[T]       //中间“=”代表程序中的“==”
06  then root[T] ← y                 // 情况1:如果 “x的父亲” 是空节点,则将y设为根节点(即旋转前x是根结点)
07  else if x = left[p[x]]  //中间“=”代表程序中的“==”
08            then left[p[x]] ← y    // 情况2:如果 x是它父节点的左孩子,则将“x的父节点”的left域指向y
09            else right[p[x]] ← y   // 情况3:(x是它父节点的右孩子) 将“x的父节点”right域指向y
10  left[y] ← x             // 将y的left域设为x
11  p[x] ← y                // 将 “x的父节点域” 设为 y


原文地址:https://www.cnblogs.com/guocm/p/3506265.html