这道题的意思是,给一个二叉树,每一条从根到叶的路径都表示一个数字,问所有路径表示的数字加起来的和是多少。
我的思路是,用一个vector<int>记录这条路径上的所有数,如果一个节点左右子树都为空,则把vector里的数字转换成一个数,加到sum里
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int sumNumbers(TreeNode* root) {
vector<int> res;
int sum = 0;
dfs(root, res, sum);
return sum;
}
void dfs(TreeNode* root, vector<int> res, int& sum)
{
if(root == NULL) return;
if(root->left == NULL && root->right == NULL)
{
res.push_back(root->val);
int num = 0;
for(int i = 0; i < res.size(); ++i)
{
num += pow(10, i) * res[res.size() - i - 1];
}
sum += num;
}
res.push_back(root->val);
dfs(root->left, res, sum);
dfs(root->right, res, sum);
}
};