LeetCode-437-路径总和 III

思路
对每个节点进行遍历,然后再对左右子树进行遍历
代码
class Solution {
int count=0;
public int pathSum(TreeNode root, int sum) {
if(root==null)return 0;
getSum(root,sum);
pathSum(root.left,sum);
pathSum(root.right,sum);
return count;
}
public void getSum(TreeNode root, int sum){
if(root==null)return;
sum-=root.val;
if(sum==0) {
count++;
}//注意这里不能结束,因为可能相互抵消,这个又是新的路径,比如到这里是3=1+2,后面有3=1+2-1+1
getSum(root.left,sum);
getSum(root.right,sum);
}
}
这篇博客介绍了如何解决LeetCode上的第437题——路径总和III。作者通过深度优先搜索策略,遍历二叉树的每个节点,递归地检查路径是否能达成目标和。代码中定义了两个方法,一个用于计算路径和,另一个用于递归地检查当前路径。关键在于理解路径可能相互抵消,即使当前和不为0,也可能在后续路径中找到匹配。
529

被折叠的 条评论
为什么被折叠?



