Comment calculer le facteur d'équilibre pour un nœud particulier, lorsque j'appelle récursivement une fonction d'insertion pour ajouter un nœud à un arbre AVL. Je n'ai pas commencé sur la logique de rotation. Je veux simplement calculer les facteurs d'équilibre.AVL Tree insertion
Dans ma tentative actuelle, je suis obligé de stocker les hauteurs de & sous-arbres de droite car je ne peux pas trouver le facteur d'équilibre sans eux.
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));
}
...
}
duplication possible de [Recalcul du facteur d'équilibre dans l'arbre AVL] (http://stackoverflow.com/questions/3915350/recalculation-of-balance-factor-in-avl-tree) –
puisque vos structures de données sont exactes Copie de celle mentionnée dans la question de @ crypto: Je suis tenté de déduire que les deux suivent la même classe et que c'est le devoir? –