AVL的右旋转功能仍然具有旧值?

时间:2016-05-22 19:40:00

标签: c data-structures struct tree avl-tree

我正在为AVL树正确旋转。目前我忽略了AVL树的高度部分。我稍后会处理它。但是在5处应用正确的旋转会给出错误的值。{{1即使在执行右旋转之后,仍然会给出旧值(分别为5,3,2)。我使用的AVL树是:

l->data,ll->data,lll->data

C代码:

                                    9(Root)

               5(Left Child)                            13(Right Child)

         3                     7                  11                      17
    2
1

1 个答案:

答案 0 :(得分:1)

您仍然会获得l, ll, and lll的旧值,因为它们是main()中定义的局部变量,并且从RightRotate1()返回后它们不会获得新值。只有root中的main()指针会被RightRotate1()更改。如果您想使用l, ll, and lll,则需要重新分配它们,以便在旋转树后指向新位置。

root = RightRotate1(l,root);
l = root->left;
ll = root->left->left;
lll = root->left->left->left;