Sum Root to Leaf Numbers

来源:互联网 发布:计算机java编程入门 编辑:程序博客网 时间:2024/06/05 15:03
/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    int sumNumbers(TreeNode *root) {       int sum=0;       sumpath(root,0,sum);       return sum;    }        void sumpath(TreeNode *p, int presum, int& sum )    {        if(NULL==p) return;        presum=presum*10+p->val;                if(p->left==NULL && p->right==NULL)        {         sum+=presum;           }                sumpath(p->left,presum,sum);        sumpath(p->right,presum,sum);    }};
树的递归两种策略:

1. 结果在root产生,可以遵循traversal order, 一般函数递归返回结果

2. 结果在leaf节点产生,并难以遵循traversal order, 并且产生结果需要父节点的数据,可以设置全局变量或者变量引用,在递归中变量得到更新,最终返回这个变量(如这题)
0 0