Как рассчитать коэффициент баланса для определенного узла, когда я рекурсивно вызываю функцию вставки для добавления узла в дерево AVL. Я не начал по логике вращения. Я просто хочу рассчитать коэффициенты баланса.Вставка AVL дерева
В моей текущей попытке я вынужден хранить высоты левых & правых поддеревов, так как я не могу найти коэффициент останова без них.
typedef struct _avlTree
{
int num;
int balFactor;
int height[2]; // left & right subtree heights
struct _avlTree *left,*right;
} *avlTree;
int avlAdd(avlTree a,avlTree aNew)
{
...
if(a->left == NULL) // left subtree insertion case
{
a->left = aNew;
return(1);
}
else
{
a->height[0] = avlAdd(a->left,aNew);
a->balFactor = a->height[0] - a->height[1];
return((a->height[0]>a->height[1]) ? (a->height[0]+1) : (a->height[1]+1));
}
...
}
Возможный дубликат [Пересчет коэффициента баланса в дереве AVL] (http://stackoverflow.com/questions/3915350/recalculation-of-balance-factor-in-avl-tree) –
, поскольку ваши структуры данных являются точными копия того, что упоминается в вопросе @ crypto: у меня возникает соблазн вывести, что вы оба придерживаетесь одного и того же класса, и это домашнее задание? –