您的位置:首页 > 其它

【LeetCode】Sum Root to Leaf Numbers

2014-04-25 12:25 381 查看
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
.

思路:重新构建了一个函数,返回值是每一个节点的权值和该节点的val。递归即可。

/**
* Definition for binary tree
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
struct LNodenum{
int val;
int lev;
};
class Solution {
public:
LNodenum cacul(TreeNode *root){
LNodenum ret;
ret.val=0;
ret.lev=1;
if(root==NULL)return ret;
if(root->left==NULL&&root->right==NULL){
ret.val=root->val;
return ret;
}else if(root->left==NULL){
ret=cacul(root->right);
ret.lev*=10;
ret.val+=root->val*ret.lev;
return ret;
}else if(root->right==NULL){
ret=cacul(root->left);
ret.lev*=10;
ret.val+=root->val*ret.lev;
return ret;
}else{
ret=cacul(root->left);
LNodenum ret1=cacul(root->right);
ret.lev=(ret.lev+ret1.lev)*10;
ret.val=root->val*ret.lev+ret.val+ret1.val;
return ret;
}
}
int sumNumbers(TreeNode *root) {
LNodenum ret=cacul(root);
return ret.val;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: