题目描述
You are given a binary tree in which each node contains an integer value.
Find the number of paths that sum to a given value.
The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).
The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.

方法思路
recursive DFS.
class Solution {
//Runtime: 18 ms, faster than 33.29%
//Memory Usage: 40.2 MB, less than 68.75%
public int pathSum(TreeNode root, int sum) {
if(root == null) return 0;
int left = pathSum(root.left, sum);
int right = pathSum(root.right, sum);
return pathSumHelp(root, sum) + left + right;
}
public int pathSumHelp(TreeNode root, int sum){
if(root == null) return 0;
int left = pathSumHelp(root.left, sum - root.val);
int right = pathSumHelp(root.right, sum - root.val);
return (root.val == sum ? 1 : 0) + left + right;
}
}

本文探讨了在给定的二叉树中寻找路径数量,这些路径上的节点值之和等于特定目标值的问题。采用递归深度优先搜索(DFS)算法解决这一挑战,通过遍历树的每个节点并计算从该节点开始的路径是否达到指定和,从而找到所有可能的路径。
410

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



