二进制树中节点的高度和深度概念之间的混淆

时间:2015-10-21 12:31:11

标签: algorithm binary-tree graph-theory

我一直在对二叉树进行一些研究,发现每个其他来源都给出了二叉树中节点深度和高度的不同概念。

我的想法

  

高度=从给定节点到叶节点的路径的最大长度。

     

Depth =从给定节点到根节点的边数。

        /*         
         *         1         (1)    level = 1, height = 3, depth = 0
         *        / \ 
         *       2   3       (3)    level = 2, height = 0, depth = 1
         *      / \    
         *     4   5         (5)    level = 3, height = 1, depth = 2
         *        / \ 
         *       6   7       (6, 7) level = 4, height = 0, depth = 3
         */

我从这个blog post中得到了这个概念,但是当只有一个节点,即根高度为1时,我很困惑。

3 个答案:

答案 0 :(得分:0)

嗯,水平只是一个不直观的词,因为我们在视觉表现中看待树木之类的东西。

根据这篇博客文章,节点的级别由1 +节点与根之间的连接数定义。

在这种情况下,所有这些级别都有意义。 7是距离1的3个连接。

但是,你也有一些不正确的高度。请记住,高度是从节点到叶子的最长路径。所以A的高度是到E的路径的边数,而不是G.它的高度是3。

  5
 /  \
6    7 

在该示例中,5具有1行子节点,并且这些子节点是叶节点,因此它的高度为1.但是如果您将6和7视为单独的树本身,则它们的高度为0,因为它们是叶节点。

答案 1 :(得分:0)

简单来说,节点的深度是从根到达该节点必须遍历的边数。节点的高度是您必须从该节点开始向下遍历以到达最远节点的边数。树的高度是其根的高度。

答案 2 :(得分:0)

来自您关联的帖子:

Height of node – The height of a node is the number of edges on the longest downward path between that node and a leaf.

我认为它说根的高度是1,参考单根的例子。

在你的例子中,我认为它应该是:

/*         
     *         1         (1)    level = 1, height = 3, depth = 0
     *        / \ 
     *       2   3       (3)    level = 2, height = 0, depth = 1
     *      / \    
     *     4   5         (5)    level = 3, height = 1, depth = 2
     *        / \ 
     *       6   7       (6, 7) level = 4, height = 0, depth = 3
     */

编辑:好的,你更正了你的帖子,所以我的帖子中的相关点是 我认为它说根的高度是1,参考单根的例子。