您的位置:首页 > 其它

LeetCode OJ:Sum Root to Leaf Numbers

2014-01-17 14:58 375 查看


Sum Root to Leaf Numbers

Total Accepted: 5395 Total
Submissions: 19143My Submissions

Given a binary tree containing digits from
0-9
only,
each root-to-leaf path could represent a number.
An example is the root-to-leaf path
1->2->3
which
represents the number
123
.
Find the total sum of all root-to-leaf numbers.
For example,
1
/ \
2   3


The root-to-leaf path
1->2
represents
the number
12
.

The root-to-leaf path
1->3
represents the number
13
.
Return the sum = 12 + 13 =
25
.

/**
* Definition for binary tree
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
#include <algorithm>
class Solution{
vector<vector<int>> SUM;
int length;
public:
int add(vector<vector<int>> store){
vector<int> total;
int v,c=0;
for(int i=1;i<=length;i++){
v=c;;
for(int j=0;j<store.size();j++){
if(store[j].size()>=i){
v+=store[j][store[j].size()-i];
}
}
c=v/10;
total.push_back(v%10);
}
if(c)total.push_back(c);

string sum="";
char t[4];
for(int i=total.size()-1;i>=0;i--){
sprintf(t,"%d",total[i]);
sum+=t;
}
return atoi(sum.c_str());
}
void dfs(TreeNode *root,vector<int> store){
if(root==NULL)return;
store.push_back(root->val);
if(root->left==NULL&&root->right==NULL){
length=length<store.size()?store.size():length;
SUM.push_back(store);
return;
}
dfs(root->left,store);
dfs(root->right,store);
}
int sumNumbers(TreeNode *root){
if(!root)return 0;
vector<int> t;
length=0;
dfs(root,t);
return add(SUM);
}
};


简约版

/**
* 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) {
return dfs(root,0);
}
private:
int dfs(TreeNode *root,int sum){
if(!root)return 0;
if(root->left==NULL&&root->right==NULL)
return sum*10+root->val;

return dfs(root->left,sum*10+root->val)+
dfs(root->right,sum*10+root->val);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: