思路
1、深度优先,先序遍历
2、和剑指offer34(和为某一值的二叉树路径)思路一样
代码
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型
*/
int sum = 0;
vector<vector<int>> res;
// 前序遍历
void helper(TreeNode* root, vector<int>& path){
if(root==nullptr) {
return;
}
path.push_back(root->val);
if(root->left==nullptr && root->right==nullptr){
res.push_back(path);
}
helper(root->left, path);
helper(root->right, path);
path.pop_back();
}
int compute_res(vector<vector<int>> res){
int sum = 0;
for(const auto& path:res){
int tmp = 0;
for(const auto& ele:path){
tmp*=10;
tmp += ele;
}
sum+=tmp;
}
return sum;
}
int sumNumbers(TreeNode* root) {
// write code here
vector<int> path;
helper(root, path);
auto ans = compute_res(res);
return ans;
}
};

京公网安备 11010502036488号