Tree 关于二叉树旋转
我想在pascal上编程一个AVL。我已经编写了一个常规的二叉树,它可以工作了,我正在尝试制作一个自平衡的二叉树,我遇到了一个问题 我有一个要旋转的子树,问题是我不知道如何分配子树根节点指针的父节点。下一棵树的含义: 要旋转的子树的根节点=30 子树的父节点=55Tree 关于二叉树旋转,tree,binary-tree,pascal,Tree,Binary Tree,Pascal,我想在pascal上编程一个AVL。我已经编写了一个常规的二叉树,它可以工作了,我正在尝试制作一个自平衡的二叉树,我遇到了一个问题 我有一个要旋转的子树,问题是我不知道如何分配子树根节点指针的父节点。下一棵树的含义: 要旋转的子树的根节点=30 子树的父节点=55 55 55 30 60 -----> 45
55 55
30 60 -----> 45 60
10 45 75 30 50 75
5 15 50 90 10 90
5 15
我该如何将指针从55改为30,从55改为45?
我看到的大多数代码都没有从节点指向其父节点的指针,因此我不知道如何更改它。您没有显示任何代码,但通常会按照
Root := Root.Rebalance;
也就是说,您调用子树来重新平衡自身,并且该重新平衡函数返回根作为其结果。该结果可能与以前的根节点相同,或者(在您的场景中)是一个新的根节点