sum-root-to-leaf-numbers

来源:互联网 发布:crm软件价格 编辑:程序博客网 时间:2024/06/06 08:32

c++中各类类型与string类型的相互转化http://www.cnblogs.com/nzbbody/p/3504199.html
这道题还是坑了我这么久,一是忘了保留多种可能性,二是忘记了出来多个0的情况。后来用string来处理的确是方便了许多。

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */int f(int s) {    int a=0;    if(s==0) return 1;    while(s) {       a++;       s/=10;    }    return a;}vector<string> f2(TreeNode* root) {    vector<string> v;    if(root==NULL) return v;    vector<string> v1 = f2(root->left);    vector<string> v2 = f2(root->right);    if(root->left||root->right) {                for (int i=0;i<v1.size();i++) {                    ostringstream ss;                    ss<<root->val<<v1[i];                    v.push_back(ss.str());                }                for (int i=0;i<v2.size();i++) {                    ostringstream ss;                    ss<<root->val<<v2[i];                    v.push_back(ss.str());                }    } else {        ostringstream ss;        ss<<root->val;        v.push_back(ss.str());       }    return v;}class Solution {public:    int sumNumbers(TreeNode *root) {        if(root==NULL) return 0;        else {            vector<string> v1 = f2(root->left);            vector<string> v2 = f2(root->right);            if(root->left||root->right) {               int ans = 0;                for (int i=0;i<v1.size();i++) {                    stringstream ss;                    ss<<root->val<<v1[i];                    int t; ss>>t;                    ans+= t;                }                for (int i=0;i<v2.size();i++) {                    stringstream ss;                    ss<<root->val<<v2[i];                    int t; ss>>t;                    ans+= t;                }                return ans;            }            else {                return root->val;            }        }    }};
0 0
原创粉丝点击