leetcode Sum Root to Leaf Numbers

来源:互联网 发布:深鉴科技 知乎 编辑:程序博客网 时间:2024/06/07 07:04

题意较为清晰易懂,即遍历二叉树中所有从根到叶子的结点的值并求和。

可以使用DFS来实现算法。

但是难点在于如何保存中间结果。

参考网上的结论,可以在遍历过程中改变结点的val数值,该数值即为从根节点到当前节点的数,因此每到一个叶子节累加该叶子节点的val值,最后的累加结果即为所求。


代码

class Solution{public:int sumNumbers(TreeNode *root){sumAll = 0;        dfsSum(root);return sumAll;}void dfsSum(TreeNode *root){TreeNode *p;if(p==NULL)return ;if(p->left==NULL&&p->right==NULL){sumAll += p->val;return;}if(p->left!=NULL){p->left->val += p->val*10;dfsSum(p->left);}if(p->right!=NULL){p->right->val += p->val*10;dfsSum(p->right);}}private:int sumAll;};

0 0