Каково определение высоты дерева?

Я не могу найти окончательного ответа на этот вопрос, я пытаюсь сделать некоторые элементарные доказательства на кучах, но вот что меня немного сбивает:

допустимо ли пустое дерево? Если да, то какова его высота?
Я думаю, что это будет 0.

какова высота дерева с одним узлом?
Я думаю, что это будет 1, но я видел определения, где 0 (и если это так, то я не знаю как учет пустого дерева).

7 ответов


Я думаю, вы должны взглянуть на словарь алгоритмов и структур данных на веб-сайте NIST. Там определение высоты говорит один узел высота 0.

на определение допустимого дерева включает пустую структуру. На сайте не упоминается высота такого дерева, но, исходя из определения высоты, она также должна быть 0.


высота дерева длина пути из корня дерева к его дальней узел (т. е. узел дальше от корня).

дерево только с корневым узлом имеет высоту 0, а дерево с нулевыми узлами будет считаться пустым. Пустое дерево имеет высоту -1. Пожалуйста, проверьте этой.

надеюсь, это поможет.


Я видел, что он используется в обоих направлениях (считая один узел как 0 или 1), но большинство источников определили бы корневое дерево как дерево высоты 0 и не считали бы дерево 0-узла допустимым.


Если ваше дерево является рекурсивно определенной структурой данных, которая может быть пустой или узлом с левым и правым поддеревом (например, деревьями поиска или кучей), то естественным определением является присвоение 0 пустому дереву и 1 + высоты самого высокого поддерева непустому дереву.

Если ваше дерево является графом, то естественным определением является самый длинный путь от корня до листа, поэтому корневое дерево имеет глубину 0. Обычно вы даже не рассматриваете пустые деревья в этом случай.


высота дерева - это длина самого длинного пути к терминальному узлу в любом из его дочерних элементов.

в Википедии написано высота пустого дерева равна -1. Я не согласен. Пустое дерево-это буквально дерево, содержащее один терминальный узел (null или специальное значение, представляющее пустое дерево). Поскольку узел не имеет дочерних элементов, длина его самого длинного пути должны быть пустые сумме = 0, не -1.

аналогично, a непустое дерево имеет двух детей, поэтому по определению есть по крайней мере путь >= 1 к терминальному узлу.

мы можем определить наше дерево следующим образом:

type 'a tree =
    | Node of 'a tree * 'a * 'a tree
    | Nil

let rec height = function
    | Node(left, x, right) -> 1 + max (height left) (height right)
    | Nil -> 0

по данным Википедия, высота (под-)дерева с одним узлом равна 0. Высота дерева без узлов будет -1. Но я думаю, что это зависит от вас, как вы определяете высоту, и ваши доказательства должны работать с любым определением.


actully идеальным defn для высоты дерева является уровень D листа D самого длинного пути от корня плюс 1..согласно 2 это defn f дерево s пустое, оно не будет иметь никакого уровня n v не может считать, что у него есть ноль, потому что уровень корня s нулевой ..поэтому пустой уровень дерева равен -1, чем accordin 2 defn его -1+1=0..поэтому нулевая высота S D пустого дерева...bt N многие книги они дали -1 bt нет объяснения s