Java:二进制搜索树的最小深度递归

时间:2015-10-17 19:46:30

标签: java algorithm recursion tree binary-search-tree

我正在编写用于计算二叉树最小深度的代码 如果输入为6,4,9,3,5,7,12,2,8,我的解决方案适用于树BST 因为最小深度是3,这是正确的 但当树为3,2时,最小深度为1而不是2 我的代码段是:

int minimumHeightRec(TreeNode root)
        {
            if(root == null) return 0;
            int left = minimumHeightRec(root.left);
            int right = minimumHeightRec(root.right);
            if(left > right) return right + 1;
            else return left + 1;
        }

2 个答案:

答案 0 :(得分:1)

您的实施是正确的。预期的minHeight应为1而不是2。 考虑一下[3,2]的例子,BST可能具有以下形式:

  3
 /
2

调查left的{​​{1}}高度为2:(3) - > (2)

查看root right的高度为1:(3)

您正在寻找BST的minHeight,因此选择正确的高度root分支是正确的选择。

请注意,您可能有一个不同的树形式,其中1是根,但逻辑和结果将是相同的。

答案 1 :(得分:0)

  • 其他没用,因为if。
  • 中有回复
  • 更多代码(TreeNode类和main)将非常有用。