只有一个节点的树的高度
Posted
技术标签:
【中文标题】只有一个节点的树的高度【英文标题】:Height of a tree with only one node 【发布时间】:2010-10-31 22:19:00 【问题描述】:根据***,
树的高度是从根到树的路径的长度 树中最深的节点。一棵只有一个节点的(有根的)树( root) 的高度为零(或一)。
我不明白 - 是零还是一(或两者兼而有之)?
【问题讨论】:
最佳答案可以在以下链接中找到:***.com/questions/2597637/… 【参考方案1】:这只是您对二叉树高度的递归描述的假设。您可以考虑仅由一个高度为 0 或高度为 1 的节点组成的树。
如果你真的想以某种方式考虑它,你可以这样想
如果将高度视为边数,则为 0(因此单个节点没有任何边,因此为 0) 如果将高度视为节点数,则为 1(因此单个节点计为 1)这只是为了描述最小的树有多少高度,那么在任何情况下,每当您添加一个降序节点时,您也会添加一个相关的边,因此它会相应地增加。
在***提供的示例中:
这棵树的高度可以是 4(节点)或 3(边)。这取决于您是按边数还是按节点数。
【讨论】:
哦,好的,我明白了。所以没有单独的术语来分别指代节点的高度和边缘的高度? 不,没有.. 树的高度以从根到最深节点的路径长度来衡量。路径由边和节点组成,特别是如果路径有 n 个边,那么它有 n+1 个节点(这应该很简单),这就是为什么你可以必须有不同的基本情况:仅由一个节点组成的路径有 0 个边但有 1 个节点。【参考方案2】:使用节点计数而不是边计数的一个优点是它将空情况(零节点和节点级别)与最小情况(一个节点,并且节点级别为一)区分开来。在某些情况下,空树没有意义,但在其他情况下,空尝试将是完全合法的。
【讨论】:
【参考方案3】:取决于约定。这里没有“正确”的答案。有人告诉我它是 1。但 0 也是正确的。
【讨论】:
【参考方案4】:我认为,一个根节点的高度应该是 0。 这很有实际意义,因为 2^height 还为您提供了该级别的节点数。
【讨论】:
不过,人们可能会提出相反的观点。如果高度是包含定义的,则 (2^height)-1 是给定高度下树的最大大小。【参考方案5】:假设您在节点类中以递归方式计算高度,我会这样做以返回高度而不包括根的高度(java 代码):
int height()
int leftHeight = 0;
int rightHeight = 0;
if(left != null)
leftHeight =+ left.height() + 1;
if(right != null)
rightHeight =+ right.height() + 1;
return Math.max(leftHeight, rightHeight);
如果你想包括根的高度,那么我会这样做:
int height()
int leftHeight = 0;
int rightHeight = 0;
if(left != null)
leftHeight =+ left.height();
if(right != null)
rightHeight =+ right.height();
return Math.max(leftHeight, rightHeight) + 1;
【讨论】:
【参考方案6】:取决于您想如何解释树的高度。在某些应用程序中,具有一个节点的树被解释为高度为 1,而其他人则认为它的高度为零。
【讨论】:
以上是关于只有一个节点的树的高度的主要内容,如果未能解决你的问题,请参考以下文章