题目描述
思路
使用深度优秀的思想,通过递归实现求解。递归函数中,通过sum记录历遍到当前节点时的总和,通过引用类型的参数res实现对所有路径和的记录。
解答
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int sumNumbers(TreeNode* root) {
if(!root) return 0;
int res=0;
fun(root, 0, res);
return res;
}
void fun(TreeNode* node, int sum, int &res)
{
if(node)
{
sum= sum*10 + node->val;
if(node->left) fun(node->left, sum,res);
if(node->right) fun(node->right,sum,res);
}
if(!node->left && !node->right)
{
res+=sum;
return;//这条语句必不可少,一定注意!!!!!
}
}
};