Leetcode 112 PathSum DFS解法
来源:7-4 注意递归的终止条件 Path Sum
讲武德的年轻人
2022-03-29
bobo老师,我用DFS解了这道题。但是dfs没有返回值,同时维护了一个成员变量findSum(代码如下)。我在想如何改造dfs函数, 使其直接返回true or false,但是失败了。能否请老师看下,如何把dfs改成boolean返回值类型呢?这样直接return dfs就行了
class Solution {
private boolean findSum = false;
public boolean hasPathSum(TreeNode root, int targetSum) {
if (root == null) return false;
dfs(root, root.val, targetSum);
return findSum;
}
private void dfs(TreeNode node, int sum, int targetSum) {
if (node.left == null && node.right == null) {
if (sum == targetSum) {
findSum = true;
return;
}
} else {
if (node.left != null)
dfs(node.left, sum + node.left.val, targetSum);
if (node.right != null)
dfs(node.right, sum + node.right.val, targetSum);
}
}
}写回答
1回答
-
看看你能不能理解以下代码?
class Solution { public boolean hasPathSum(TreeNode root, int targetSum) { if(root == null) return false; return dfs(root, targetSum); } // 寻找从 node 出发,有没有一条从 node 到叶子的路径,其和为 targetSum private boolean dfs(TreeNode node, int targetSum) { if (node.left == null && node.right == null){ return targetSum == node.val; } if(node.left != null && dfs(node.left, targetSum - node.val)) return true; if(node.right != null && dfs(node.right, targetSum - node.val)) return true; return false; } }继续加油!:)
042022-03-29
相似问题