Un arbre binaire a 1 ou 2 enfants aux nœuds non foliaires et 0 nœud aux nœuds foliaires. Soit nœuds dans un arbre et nous devons les disposer de telle manière qu'ils forment toujours un arbre binaire valide.n
Sans prouver, j'affirme que pour maximiser la hauteur, les nœuds donnés doivent être disposés de façon linéaire, c'est-à-dire que chaque nœud non-feuille doit avoir un seul enfant:
O 1
|
O 2
|
O 3
|
O 4
|
O 5
|
O 6
|
O 7
|
O 8
Ici, la formule pour calculer la relation de hauteur en termes de nombre de nœuds est simple. Si est la hauteur de l'arbre, alors .h = n - 1hh = n - 1
Maintenant, si nous essayons de construire un arbre binaire de nœuds avec une hauteur minimale (toujours réductible à un arbre binaire complet), nous devons emballer autant de nœuds que possible dans les niveaux supérieurs, avant de passer au niveau suivant. Ainsi, l'arbre prend la forme de l'arbre suivant:n
O
|1
|
O------+-----O
|2 |3
| |
O---+---O O---+----O
|4 |5 6 7
| |
O---+--O O
8 9 10
Commençons par un cas particulier, .n = 2m- 1
Nous savons que,
20+ 21+ 22+ . . . + 2m - 1= 2m- 1
De plus, il est facile de prouver qu'un niveau peut contenir au maximum nœuds.2 ije2je
En utilisant ce résultat dans la somme ci-dessus, nous constatons que pour chaque niveau , de à , il existe un terme correspondant dans l'expansion de . Cela implique qu'un arbre binaire complet nœuds est complètement rempli et a une hauteur, , où hauteur d'un arbre binaire complet avec nœuds.0 m 2 i - 1 2 m - 1 2 m - 1 h ( 2 m - 1 ) = m - 1 h ( n ) = nje0m2i - 12m- 12m- 1h ( 2m- 1 ) = m - 1h ( n ) =n
En utilisant ce résultat, , car l'arbre avec nœuds est complètement rempli et donc un arbre avec nœuds doit accueillir le nœud supplémentaire au niveau suivant , augmentant la hauteur de 1 de à .2 m - 1 ( 2 m - 1 ) + 1 = 2 m m m - 1 mh ( 2m) = m2m- 1( 2m- 1 ) + 1 = 2mmm - 1m
Jusqu'à présent, nous avons prouvé,
ainsi que,h ( 2 m + 1 ) = m + 1 h ( 2 m + 1 - 1 ) = m
h ( 2m) = m ,
h ( 2m + 1) = m + 1
h ( 2m + 1- 1 ) = m
Ainsi, m ≤ h ( n ) < m + 1∀ n ∈ Z , 2m≤ n < 2m + 1
m ≤ h ( n ) < m + 1
Mais, en prenant log (base 2) des deux côtés,
m = ⌊ log 2 ( n ) ⌋
m ≤ log2( n ) < m + 1
m = ⌊ log2( n ) ⌋
Ainsi,h ( n ) = m = ⌊ log 2 ( n ) ⌋∀ n , n ∈ [ 2m, 2m + 1)
h ( n ) = m = ⌊ log2( n ) ⌋
Et nous pouvons généraliser ce résultat utilisant l'induction.∀ n ∈ Z
PS: Le livre qui indique la hauteur d'un arbre binaire complet comme n'est pas valide pour tous car donnerait des valeurs non intégrales pour la plupart des entiers (c'est-à-dire pour tous sauf parfait) arbres binaires), mais la hauteur d'un arbre est purement intégrale.Journal2( n + 1 ) - 1nJournal2( n )n