【问题标题】:Recalculation of Balance Factor in AVL TreeAVL 树中平衡因子的重新计算
【发布时间】:2010-10-12 13:44:14
【问题描述】:

在执行旋转以平衡 AVL 树后,在插入后立即如何更改所有父节点的平衡因子(适当地,通过 -1 或 1)?

AVL树的每个节点都有以下结构:

typedef struct _avlTree
{
 nutbolt part;
 int balanceFactor;
 struct _avlTree *left,*right;
} *avlTree;

我已经按照Wikipedia 上给出的定义设置了平衡因子。

我需要在每个节点中都有一个指向父节点的指针吗?

【问题讨论】:

  • 您是在实现 AVL 代码,还是在使用其他人的 AVL 代码?
  • 尝试实现自己的代码。
  • 那么似乎有人偷了你的数据结构声明。

标签: c avl-tree


【解决方案1】:

您需要为每个节点创建一个父指针,当您更改树结构时也需要修改它。或者,您需要跟踪从根开始的所有已访问节点,或者通过递归自动跟踪,或者如果您有迭代方法,则在数组中手动​​跟踪。

你不应该错过这个深入研究这个主题的机会:

http://www.stanford.edu/~blp/avl/

【讨论】:

    【解决方案2】:

    也许看看AVL C Library 以获得灵感?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多