我似乎无法为此找到明确的答案,我正试图在堆上做一些基本的证明,但这就是让我失望的原因:
空树是否有效?如果是这样,它的高度是多少?
我认为这将是0。
具有单个节点的树的高度是多少?
我认为这将是1,但我已经看到定义为0(如果是这种情况,那么我不知道如何考虑空树)。
答案 0 :(得分:18)
答案 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没有解释给定