为什么这个二进制搜索成功中间的返回值被忽略?

时间:2015-07-27 02:20:39

标签: java return-value

我仍然对二叉树最大路径总和(Leetcode 124)感到困惑。 我找到了一个简单有效的java解决方案,但没有变量获取函数helper()的返回值。为什么它仍然有效?

以下是代码:

 public class Solution {

    int max = 0;
    public int maxPathSum(TreeNode root) {
        if(root == null) return 0;
        max = root.val;
        helper(root);
        return max;
    }
    public int helper(TreeNode node)
    {
        if(node == null) return 0;
        int left = helper(node.left);
        int right = helper(node.right);
        left = left > 0 ? left : 0;
        right = right > 0 ? right : 0;
        int curMax = node.val + left + right;
        max = Math.max(max, curMax);
        return node.val + Math.max(left, right);
    }
}

在" maxPathSum()" function,第三行," helper(root)"的返回值在哪里? (下面的helper()的定义有一个return语句。)

1 个答案:

答案 0 :(得分:5)

您似乎对返回值的Java方法的概念感到困惑,并且在调用该方法的代码中使用该返回值的义务。尽管helper()确实返回了一个值,但是没有合同说明你在调用它时必须这样做。所以当你打电话时

helper(root)

返回值不会在调用它的方法中使用。要清楚,调用helper(root) 意味着您将从当前调用方法中执行返回。