【问题标题】:About binary tree rotations关于二叉树旋转
【发布时间】:2014-03-21 19:24:53
【问题描述】:

我正在尝试在 pascal 上编写 AVL。我已经编写了一个常规的二叉树并且它可以工作,我正在尝试制作一个自平衡的,但我遇到了一个问题。

我有一个要旋转的子树,问题是我不知道如何分配子树根节点指针的父级。给出下一棵树的含义: 我要旋转的子树的根节点 = 30 子树的父节点 = 55

          55                                      55          
       30    60            ----->           45         60         
   10    45    75                        30   50          75       
  5  15    50    90                     10                    90
                                      5    15                

我应该如何将指针从 55 更改为 30,从 55 更改为 45? 我见过的大多数代码都没有从节点到父节点的指针,所以我不知道如何更改它。

【问题讨论】:

    标签: tree binary-tree pascal


    【解决方案1】:

    您没有显示任何代码,但通常您会按照以下方式做一些事情

    Root := Root.Rebalance;
    

    也就是说,您调用子树来重新平衡自身,并且该重新平衡函数返回根作为其结果。该结果可能与以前的根相同,或者 - 在您的场景中 - 一个新的根节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      相关资源
      最近更新 更多