//这两个函数只是来实现两个功能,关键还是怎么拿到从根到叶子节点的数据
int Sum(int*a,int len)
{
int sum = 0;
for(int i = 0;i<len;i++)
{
sum+=a[i];
}
return sum;
}
int Count(int*a,int len)
{
int n = len-1;
int sum = 0;
for(int i = 0;i<len;i++)
{
sum += a[i]*pow(10,n);
n--;
}
return sum;
}
void _sumNumbers(struct TreeNode* root,int* road,int*pi,int*sum,int*pj)
{
if(root==NULL||root->val=='#')
return ;
//拿到节点放入数组
road[(*pi)++] = root->val;
if(root->left==NULL&&root->right==NULL)
{
sum[(*pj)++] = Count(road,*pi);
//返回数据个数减1
(*pi)--;
return ;
}
_sumNumbers(root->left, road,pi, sum, pj);
_sumNumbers(root->right, road,pi, sum, pj);
//往回走减1
(*pi)--;
}
int sumNumbers(struct TreeNode* root ) {
// write code here
int road[100] = {0};
int i = 0;
int j = 0;
int sum[1000] = {0};
_sumNumbers(root,road,&i,sum,&j);
return Sum(sum,j);
}