Пересчет балансового коэффициента в дереве AVL - PullRequest
1 голос
/ 12 октября 2010

После выполнения поворота для балансировки дерева AVL, сразу после вставки, как я могу изменить коэффициент баланса всех родительских узлов (соответственно, на -1 или 1)?

Каждый узел дерева AVL имеет следующую структуру:

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

Я установил коэффициент баланса согласно определению, данному в Википедия .

Нужно ли указывать на родительский узел в каждом узле?

Ответы [ 2 ]

2 голосов
/ 12 октября 2010

Вам также нужен родительский указатель для каждого узла, который также будет нуждаться в модификации всякий раз, когда вы меняете древовидную структуру. Или вам нужно отслеживать все посещенные узлы, начиная с корня, либо автоматически по рекурсии, либо вручную в массиве, если у вас есть итеративный подход.

Вы не должны пропустить это для углубленного изучения темы:

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

0 голосов
/ 12 октября 2010

Может быть, посмотрите на AVL C Library для вдохновения?

...