1,题目要求
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).
求有几条路径,使的加和等于给定的sum值。
2,题目思路
利用深度优先的递归思想来解决这类树的问题。
每次涉及到树的问题,都很难去解决。在这一题中,因为用到了DFS,因此写一个新的DFS处理函数比较好,用于统计从该节点开始又几条路径的累加和等于给定的值,返回值类型为int。
因为从题目的表述中可以得知,树的值并不是均匀的,而且有负值的出现,因此每次对一个节点的探索都需要探索到最后一层的节点。
3,程序源码
class Solution {
public:
int pathSum(TreeNode* root, int sum) {
if(root == NULL) return 0;
return isSumEqual(root, sum) + pathSum(root->left, sum) + pathSum(root->right, sum);
}
private:
int isSumEqual(TreeNode* node, int target){ //从某一节点开始有几条路径等于给定的值
if(node == NULL)
return 0;
return (node->val == target? 1 : 0) + isSumEqual(node->left,target-node->val) + isSumEqual(node->right,target-node->val);
}
};

本文介绍了一种使用深度优先搜索(DFS)的方法来解决寻找二叉树中所有路径和等于给定值的问题。通过递归算法实现,具体探讨了如何从任意节点开始向下遍历,统计路径数量。
401

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



