树高的定义是什么?

时间:2010-02-05 19:24:38

标签: math data-structures tree heap

我似乎无法为此找到明确的答案,我正试图在堆上做一些基本的证明,但这就是让我失望的原因:

空树是否有效?如果是这样,它的高度是多少?
我认为这将是0。

具有单个节点的树的高度是多少?
我认为这将是1,但我已经看到定义为0(如果是这种情况,那么我不知道如何考虑空树)。

7 个答案:

答案 0 :(得分:18)

树的高度是从树的根到其最远节点(即距离根最远的叶节点)的路径长度。

只有根节点的树的高度为0,而节点为零的树将被视为空。空树的高度为-1。请检查this

我希望这会有所帮助。

答案 1 :(得分:9)

我认为您应该在NIST网站上查看 Dictionary of Algorithms and Data Structures definition for height表示单个节点的高度为0.

definition of a valid tree确实包含空结构。该网站没有提到这种树的高度,但根据高度的定义,它也应该是0.

答案 2 :(得分:5)

我已经看到它以两种方式使用(将单个节点计为0或1),但是大多数源将仅将根树定义为高度为0的树,并且不会考虑0节点树有效的。

答案 3 :(得分:2)

如果您的树是递归定义的数据结构,可能是空的或具有左右子树的节点(例如搜索树或您的堆),那么自然定义是将0分配给空树并且1 +最高子树到非空树的高度。

如果您的树是图形,那么自然定义是从根到叶子的最长路径,因此仅根树的深度为0.在这种情况下,您通常不会考虑空树。

答案 4 :(得分:2)

树的高度是指其子节点中终端节点的最长路径的长度。

维基百科说the height of an empty tree is -1。我不同意。空树实际上只是一个包含一个终端节点的树(空值或特殊值,表示空树)。由于节点没有子节点,因此其最长路径的长度必须empty sum = 0,而不是-1。

同样,非空树有两个子节点,因此根据定义,至少路径> = 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

答案 5 :(得分:0)

根据Wikipedia,具有单个节点的(子)树的高度为0.没有节点的树的高度将为-1。但我认为这取决于你,你如何定义高度,你的证明应该适用于任何一个定义。

答案 6 :(得分:-4)

实际上树的高度是一个完美的定义是从根加上1个最长路径的叶子的d级别。这个定义的树空了,它不会有任何级别nv不能认为它有零,因为水平一个根的零。所以空树的水平是-1,而且对应的2定义它的-1 + 1 = 0..so空的树的ZERO sd高度......很多书他们给了-1 bt没有解释给定