我正在为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
答案 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;