gpt4 book ai didi

Java return 语句奇怪的行为

转载 作者:行者123 更新时间:2023-12-02 07:41:16 25 4
gpt4 key购买 nike

我正在解决 leetcode 中的路径总和问题,但我不明白 return 语句的行为。我有一棵有 2 个节点的树。根节点的值为 1,其左子节点的值为 2。

如果 2 个节点的总和为 3,我必须返回 true,显然确实如此,但不知何故,即使在达到 return true 后,程序仍继续运行。

public class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if (root != null) return hasPathSumRec(root, 0, sum);
else return false;
}

public boolean hasPathSumRec(TreeNode node, int currentSum, int sum) {
if (isLeaf(node) && sum == currentSum + node.val) {
return true;
} else {
if (node.left != null) {
hasPathSumRec(node.left, currentSum + node.val, sum);
}
if (node.right != null) {
hasPathSumRec(node.right, currentSum + node.val, sum);
}
}
return false;
}

public boolean isLeaf(TreeNode node) {
return node.left == null && node.right == null;

....
}

我的问题是 - 即使程序进入了return true,但它如何达到return false

最佳答案

您应该使用递归调用返回的值:

public boolean hasPathSumRec(TreeNode node, int currentSum, int sum) {
if (isLeaf(node) && sum == currentSum + node.val) {
return true;
} else {
boolean result = false;
if (node.left != null) {
result = result || hasPathSumRec(node.left, currentSum + node.val, sum);
}
if (node.right != null) {
result = result || hasPathSumRec(node.right, currentSum + node.val, sum);
}
return result;
}
return false;
}

当您忽略它们时,就会到达 return false; 语句。

关于Java return 语句奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26595455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com