LeetCode(Sum Root to Leaf Numbers)

제목 요구사항:
Given a binary tree containing digits from  0-9  only, each root-to-leaf path could represent a number.
An example is the root-to-leaf path  1->2->3  which represents the number  123 .
Find the total sum of all root-to-leaf numbers.
For example,
    1
   / \
  2   3

The root-to-leaf path  1->2  represents the number  12 . The root-to-leaf path  1->3  represents the number  13 .
Return the sum = 12 + 13 =  25 . 말할 것도 없이 귀착이다
코드:
class Solution {
public:
   int sumNumbers(TreeNode *root) {
        if(root == NULL)
            return 0;
        int ret = 0;
        string tmp;
        DFS(root, ret, tmp);
        return ret;
    }
    
    void DFS(const TreeNode* root, int &sum, string &path)
    {
        if(root == NULL)
            return;
        path += root->val + '0';
        if (root->left == NULL && root->right == NULL) {
            sum += atoi(path.c_str());
            return;
        }
        if (root->left != NULL) {
            DFS(root->left, sum, path);
            path.pop_back();
        }
        
        if (root->right != NULL) {
            DFS(root->right, sum, path);
            path.pop_back();
        }
        
    }
};

좋은 웹페이지 즐겨찾기