题解 | #二叉树根节点到叶子节点的所有路径和#
二叉树根节点到叶子节点的所有路径和
http://www.nowcoder.com/practice/185a87cd29eb42049132aed873273e83
这道题不难直接dfs爆搜 但是有坑点 需要两次回溯 找到叶子节点的时候和一个节点搜完都要回溯一下
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型
*/
vector<int> v;
int ans = 0;
int sumcnt(vector<int> mv){
int sum = 0;
for(int i=0;i<mv.size();i++){
sum = 10*sum + mv[i];
}
return sum;
}
void dfs(TreeNode* root){
if(root->left == NULL && root->right == NULL){
v.push_back(root->val);
ans += sumcnt(v);
v.pop_back();//回溯
return ;
}
v.push_back(root->val);
if(root->left != NULL) dfs(root->left);
if(root->right != NULL) dfs(root->right);
v.pop_back();//回溯
}
int sumNumbers(TreeNode* root) {
if(root == NULL) return 0;
dfs(root);
return ans;
}
};