插入后AVL树旋转的替代定义

问题描述

以下平衡AVL树的方法正确吗?

(注意:以1结尾的符号已被视为左节点,而以2结尾的符号已被视为右节点)。

在创建新节点之后向上移动时,假设我们当前在节点x处。假设x有两个孩子y1,y2和h(y2)-h(y1)> 1,则由于y2的高度更大,我们将检查y2的两个孩子,说z1和z2。如果h(z2)> = h(z1),那么我们的旋转将是右旋转。

因此,我将进行左右旋转以平衡AVL树节点x。

为此,我只需要更新到达的每个节点的高度即可。

以上是否有反例?在h(z2)> h(z1)的情况下,很明显它将是向右旋转。但是当h(z2)= h(z1)时我有点困惑,因为在那种情况下,我们创建的节点可能是z1的子节点,因此根据通常的定义,它应该是向右旋转。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)