129.SumRoottoLeafNumbers

你快乐吗?

Posted by bbkgl on September 26, 2019

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;
        }
    }
};