liuxinyu95 / AlgoXY

Book of Elementary Functional Algorithms and Data structures
6.09k stars 737 forks source link

4.0.2树旋转的理解 #74

Closed hongjia closed 2 years ago

hongjia commented 2 years ago

公式(4.1)中有:

rotate_l\ ((a, x, b), y, c) & = & (a, x, (b, y, c)) \

这里,rotate_l的参数怎么理解?

从直观上,我是理解为(a, x, b)是一棵x为父节点,a、b分别为左右子节点的子树。这样,((a, x, b), y, c)对应于图4.3“树的左右旋转”中的右侧,即在图中以y为根。而上式等号右侧对应的是图4.3的左侧,以x为根的子树。

可这样以来,公式(4.1)定义的操作就应该是右旋转吧,用rotate_r表示合适?下面的算法LEFT-ROTATE将图4.3中的左侧子树变换成了右侧子树。

还是我对(a, x, b)的理解有误?

liuxinyu95 commented 2 years ago

这两个公式颠倒了,我稍后修改。

liuxinyu95 commented 2 years ago

已修改:https://github.com/liuxinyu95/AlgoXY/commit/43e2ff598ac5a933911de033a345e886590f29bf