129. Sum Root to Leaf Numbers
C++, dfs。
void dfs(TreeNode *root, string temp, int &ans);
看函数参数就知道了,对于当前结点,如果是叶节点,就把和加入ans。
如果不是叶节点,就带着当前结点的数字往左右儿子继续递归。
代码如下:
class Solution {
public:
int sumNumbers(TreeNode* root) {
int ans = 0;
if (!root) return 0;
dfs(root, "", ans);
return ans;
}
void dfs(TreeNode *root, string temp, int &ans) {
temp.push_back(static_cast<char>(root->val + '0'));
if (root->left) {
dfs(root->left, temp, ans);
}
if (root->right) {
dfs(root->right, temp, ans);
}
if (!root->left && !root->right) {
int t;
sscanf(temp.c_str(), "%d", &t);
ans += t;
}
}
};