我仍然对二叉树最大路径总和(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语句。)
答案 0 :(得分:5)
您似乎对返回值的Java方法的概念感到困惑,并且在调用该方法的代码中使用该返回值的义务。尽管helper()
确实返回了一个值,但是没有合同说明你在调用它时必须这样做。所以当你打电话时
helper(root)
返回值不会在调用它的方法中使用。要清楚,调用helper(root)
不意味着您将从当前调用方法中执行返回。