Je suis en train de créer une forme unique d'encodage de Huffman et de construire un arbre k-aire (dans ce cas particulier, 3-aires) qui est plein (chaque nœud aura 0 ou k enfants), et je sais combien de feuilles il restera avoir avant que je le construise. Comment calculer le nombre total de noeuds dans l'arbre en termes de nombre de feuilles?
Je sais que dans le cas d'un arbre binaire complet (2-aire), la formule est 2L - 1, où L est le nombre de feuilles. Je voudrais étendre ce principe au cas d’un arbre k-aire.
Pensez à la façon de prouver le résultat pour un arbre binaire complet et vous verrez comment le faire en général. Pour l’arbre binaire complet, disons de hauteur h
, le nombre de nœuds N
est
N = 2^{h+1} - 1
Pourquoi? Étant donné que le premier niveau comporte des nœuds 2^0
, le deuxième niveau comporte des nœuds 2^1
et, en général, le niveau k
th comporte des nœuds 2^{k-1}
. L’ajout de ceux-ci pour un total de h+1
niveaux (donc height h
) donne
N = 1 + 2 + 2^2 + 2^3 + ... + 2^h = (2^{h+1} - 1) / (2 - 1) = 2^{h+1} - 1
Le nombre total de feuilles L
est simplement le nombre de nœuds au dernier niveau, donc L = 2^h
. Par conséquent, par substitution, nous obtenons
N = 2*L - 1
Pour un arbre k
ary, rien ne change sauf le 2
. Alors
N = 1 + k + k^2 + k^3 + ... + k^h = (k^{h+1} - 1) / (k - 1)
L = k^h
et donc un peu d'algèbre peut vous prendre la dernière étape pour obtenir
N = (k*L - 1) / (k-1)
La formule pour 2L-1 que vous avez mentionnée vient de la recherche sur un arbre binaire complet, équilibré: au dernier niveau, vous avez 2 ^ h leafs et aux autres niveaux: 1 + 2 + 4 + .... + 2 ^ (h-1) = 2 ^ h -1 feuilles. Lorsque vous modifiez les niveaux dans l’arbre et en créez un non équilibré, le nombre de nœuds internes que vous possédez ne change pas.
Dans un arbre à trois branches, c'est la même logique: au dernier niveau, vous avez 3 ^ h feuilles, et aux autres niveaux: 1 + 3 + 9 + .... + 3 ^ (h-1) = (3 ^ h -1)/2, cela signifie que sur un arbre à 3 niveaux, vous avez 1.5 * L - 0.5 feuilles (et cela donne un sens - parce que le degré est plus grand, vous avez besoin de moins de nœuds internes). Je pense que là aussi, lorsque vous bousculez les niveaux dans l’arborescence, vous aurez toujours besoin du même nombre de nœuds internes.
J'espère que ça vous aide
Pour tout arbre k-aire, le nombre total de nœuds n = [(k ^ (h + 1)) - 1]/(h-1), où h est la hauteur de l'arbre k-aire.
Ex: - Pour l’arbre binaire complet (k = 2) n ° total de nœuds = [(2 ^ (h + 1)) - 1]/(h-1).
Donc pour la hauteur 3 le total non. des noeuds seront 15.
Pour l'arbre ternaire complet (k = 3), non. de nœuds = [(3 ^ (h + 1)) - 1]/(h-1).
Donc pour la hauteur 3 le total non. des noeuds seront 40.