在Mark Allen Weiss 的Data Structures and Algorithm Analysis in C++(第 4 版)中,在第 162 页的图 4.50 中,该书描述了将树的最左边的孩子与唯一的左孩子展开最终的样子。
我感到困惑的是这本书是如何从第 2 步到第 3 步的。以下是第 162 页图 4.50 中突出显示的步骤:
而我的第三步看起来像这样:
7
/
6
/
1
\
3
/ \
2 4
\
5
我的第四步也是最后一步是这样的:
1
\
4
/ \
3 6
/ / \
2 5 7
我对这本书如何平衡树感到困惑。对我来说,当 1 超过 4 时,树的底部看起来像这样:
...
/
1
\
2
\
3
\
4
我的逻辑是发生平衡的根是 2。然后你会做一个左旋转,树的底部看起来像这样:
...
/
1
\
3
/ \
2 4
我做错了什么,还是我只是以一种不同但同样有效的方式来做这件事?我也很困惑,因为这本书的最后一棵树从 6 的根开始不平衡,而我的 4 的根没有不平衡。