Сначала может быть какая-то разница в том, как компьютерные науки вычисляют
высота дерева, в зависимости от способа определения высоты в дискретной математике
(теория графов), это может быть связано с наличием данных в любом узле
(или вершина), тогда как в математике это чисто теоретический подход.
Так что, может, лучше уточнить, какой вам нужен.
В дискретной математике деревья классифицируются как m-арные деревья, поэтому
бинарное дерево - это 2-арное дерево. Также на любой данной высоте, может быть
не более 2 ^ h = L (уходит). Это важно заметить, так как это подтверждает, что
корень находится на нулевой высоте, следовательно, 2 ^ 0 = 1 лист ... 1 вершина ... корень.
Таким образом, учитывая n вершин, высота дерева определяется по формуле
n = 2 ^ (h + 1) - 1
Поскольку вы ищете h, вы должны взять log2 с обеих сторон
формула n = 2 ^ (h + 1) - 1
Для полного бинарного дерева максимальная высота
log2 (n + 1) = log2 (2 ^ (h + 1))
это равно потолку (log2 (n + 1) - 1) = h
Для неполного двоичного дерева максимальная высота = (n - 1)
поэтому, если у вас есть n вершин, корень должен быть вычтен, чтобы получить
максимальная высота из-за предыдущей формулы (2 ^ h = L)
Для минимальных высот, экстраполировать из приведенных выше правил.