找到二叉树的最小高度

时间:2013-12-03 21:13:12

标签: recursion height binary-tree

请在将其作为重复报告之前阅读我的问题。在文献中,为了找到树的最小高度,常见的方法如下:

int minDepth(TreeNode root) {
    if (root == null) { return 0;}
        return 1 + Math.min(minDepth(root.left), minDepth(root.right));
}

但是,我认为它不区分叶子和只有一个子节点的节点,因此返回错误的值。例如,如果我们的树看起来像这样:

A是root

B是A

的左孩子

C是B

的正确孩子

M是C

的左孩子

此函数返回1,而叶子距离根3步,因此最小高度为4。

由于这个递归版本通常在文献中提出,我认为我遗漏了一些东西。

有人可以为我清楚这一点吗?

1 个答案:

答案 0 :(得分:0)

您的评论表明您找到的文本实际上对我使用的术语使用了相同的定义。如果情况确实如此,那么问题就不是为什么你所展示的算法是正确的 - 在这些情况下它只是错误。

选择第三个最简单的二叉树,即由两个节点组成的二叉树。它只有一片叶子,它的深度是两个,它的最小深度也是两个。但是你引用的算法返回值1。因此,除非作者对其中一个术语使用不同的定义(例如,“最小高度”表示“树中最短路径”/“指向空指针的最短路径”),结果完全错误。