leetcode之Sum Root to Leaf Numbers

来源:互联网 发布:程序员上的网站 编辑:程序博客网 时间:2024/04/28 21:45
/**
 * 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) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if (root==NULL) {
            return 0;
        }
        int sum = 0;
        stack<TreeNode* > s;
        s.push(root);
        int num = root->val;
        map<TreeNode*, int> visited;
        visited[root] = 1;
        while(!s.empty()) {
            TreeNode* tmp = s.top();
            while (tmp->left && !visited[tmp->left]) {
                    s.push(tmp->left);
                    visited[tmp->left]=1;
                    num *= 10;
                    num += tmp->left->val;
                    tmp = tmp->left;
                    
            }    
            if (tmp->right && !visited[tmp->right]) {
              //  s.pop();
                s.push(tmp->right);
                visited[tmp->right] = 1;
        num *= 10;
        num += tmp->right->val;
        continue;
            } else if (tmp->left==NULL&&tmp->right==NULL) {
                sum += num;
            //    s.pop();
                num -= tmp->val;
                num /=10;
               // continue;
            } else {
            num -= tmp->val;
                num /=10;
        }
           s.pop();
        }
        return sum;
    }

};
原创粉丝点击