Подумайте, как доказать результат для полного бинарного дерева, и вы увидите, как это сделать в целом. Для полного двоичного дерева, скажем, высоты h
, число узлов N
равно
N = 2^{h+1} - 1
Почему? Поскольку первый уровень имеет 2^0
узлов, второй уровень имеет 2^1
узлов, и, как правило, k
-й уровень имеет 2^{k-1}
узлов. Сложив их в общей сложности h+1
уровней (т.е. высота h
), вы получите
N = 1 + 2 + 2^2 + 2^3 + ... + 2^h = (2^{h+1} - 1) / (2 - 1) = 2^{h+1} - 1
Общее количество листьев L
- это просто количество узлов на последнем уровне, поэтому L = 2^h
. Следовательно, подстановкой мы получаем
N = 2*L - 1
Для дерева k
ничего не меняется, кроме 2
. Итак
N = 1 + k + k^2 + k^3 + ... + k^h = (k^{h+1} - 1) / (k - 1)
L = k^h
и немного алгебры может сделать последний шаг, чтобы получить
N = (k*L - 1) / (k-1)