Бінарне дерево має 1 або 2 дітей у нелистових вузлах та 0 вузлів у листкових вузлах. Нехай у дереві буде вузлів, і ми маємо їх розташувати таким чином, щоб вони все-таки утворювали дійсне двійкове дерево.n
Не доводячи, я заявляю, що для досягнення максимальної висоти дані вузли повинні розташовуватися лінійно, тобто кожен нелистовий вузол повинен мати лише одну дитину:
O 1
|
O 2
|
O 3
|
O 4
|
O 5
|
O 6
|
O 7
|
O 8
Тут формула для обчислення відношення висоти за кількістю вузлів прямолінійна. Якщо - висота дерева, то .hh=n−1
Тепер, якщо ми спробуємо побудувати бінарне дерево з вузлів з мінімальною висотою (завжди зводиться до повного бінарного дерева), нам доведеться спакувати якомога більше вузлів у верхніх рівнях, перш ніж переходити до наступного рівня. Отже, дерево має форму наступного дерева:n
O
|1
|
O------+-----O
|2 |3
| |
O---+---O O---+----O
|4 |5 6 7
| |
O---+--O O
8 9 10
Почнемо з конкретного випадку, .n=2m−1
Ми знаємо, що
20+21+22+...+2m−1=2m−1
Крім того, легко довести, що рівень може мати в ньому не більше вузлів.i2i
Використовуючи цей результат у наведеній вище сумі, знаходимо, що для кожного рівня , від до , існує відповідний доданок при розширенні . Це означає, що повне двійкове дерево вузлів повністю заповнене і має висоту, , де висота повного двійкового дерева з вузлами.i0m2i−12m−12m−1h(2m−1)=m−1h(n)=n
Використовуючи цей результат, , оскільки дерево з вузлами повністю заповнене і, таким чином, дерево з вузлами має вміщувати додатковий вузол на наступному рівні , збільшуючи висоту на 1 з до .h(2m)=m2m−1(2m−1)+1=2mmm−1m
До цього часу ми довели,
, а також,
h(2m)=m,
h(2m+1)=m+1
h(2m+1−1)=m
Таким чином,∀n∈Z,2m≤n<2m+1
m≤h(n)<m+1
Але, беручи журнал (база 2) з обох сторін,
m≤log2(n)<m+1
m=⌊log2(n)⌋
Таким чином,∀n,n∈[2m,2m+1)
h(n)=m=⌊log2(n)⌋
І ми можемо узагальнити цей результат за допомогою індукції.∀n∈Z
PS: Книга, яка визначає висоту повного бінарного дерева як , не вірна для всіх оскільки дасть значення для більшості цілих чисел (тобто для всіх, крім досконалих двійкові дерева), але висота дерева суцільно цільна.log2(n+1)−1nlog2(n)n