LeetCode OJ--Sum Root to Leaf Numbers

https://oj.leetcode.com/problems/sum-root-to-leaf-numbers/

给一棵树,找从根到叶的路径,并把路径上的数相加,求和。

树的深度优先搜索

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int sumNumbers(TreeNode *root) {
        if(root == NULL)
            return 0;
        vector<int> numbers;
        vector<int> digits;
        deep(root,numbers,digits);
        
        int sum = 0;
        for(int i = 0; i < numbers.size(); i++)
        {
            sum += numbers[i];
        }
        return sum;
    }
    
    void deep(TreeNode *root, vector<int> &numbers, vector<int> &digits)
    {
        digits.push_back(root->val);
        
        if(root->left == NULL && root->right == NULL)
        {
            int num = 0;
            for(int i = 0; i < digits.size(); i++)
            {
                num *= 10;
                num += digits[i];
            }
            numbers.push_back(num);
            return;
        }
        if(root->left)
        {
            deep(root->left,numbers,digits);
            digits.pop_back();
        }
        if(root->right)
        {
            deep(root->right,numbers,digits);
            digits.pop_back();
        }
    }
};
原文地址:https://www.cnblogs.com/qingcheng/p/3829076.html