/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    int f(TreeNode* root,int count)
    {
        int sum=0;
        if(root->left==NULL&&root->right==NULL)
        {
            sum=count;
        }
        if(root->left!=NULL)
        {
            count=(count*10)+root->left->val;
            sum+=f(root->left,count);
        }
        if(root->right!=NULL)
        {
            if(count==1&&root->val==0)
            {
                count=0;
            }
            if(count>9&&root->left!=NULL)
            {
                count/=10;
            }
            count=(count*10)+root->right->val;
            sum+=f(root->right,count);
        }
        return sum;
    }
    int sumNumbers(TreeNode* root) {
        int count=root->val;
        if(root==NULL)
        {
            return 0;
        }
        return f(root,count);
    }
};