AVL树中平衡因子的重新计算

时间:2010-10-12 13:44:15

标签: c avl-tree

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

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

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

我根据Wikipedia上给出的定义设置了平衡系数。

我是否需要指向每个节点中的父节点?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

也许看一下AVL C Library的灵感?