题解 | #二叉树根节点到叶子节点的所有路径和#
二叉树根节点到叶子节点的所有路径和
http://www.nowcoder.com/practice/185a87cd29eb42049132aed873273e83
/**
* struct TreeNode {* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型
*/
int sumNumbers(TreeNode* root) {
if(!root) return 0;
int val=0;
vector<int> path;
dfs(root,val,path);
int sum=0;
for(int i=0;i<path.size();i++){
sum+=path[i];
}
return sum;
}
void dfs(TreeNode* root,int val,vector<int>& path){
val=val*10+root->val;
if(!root->left && !root->right) path.push_back(val);
if(root->left) dfs(root->left,val,path);
if(root->right) dfs(root->right,val,path);
val=(val-root->val)/10;
}
};