您的位置:首页 > 其它

Sum Root to Leaf Numbers [LeetCode]

2013-10-27 07:35 302 查看
Problem description: http://oj.leetcode.com/problems/sum-root-to-leaf-numbers/

Basic idea: To store the num vector in every node of tree by starting from leaf, the go up util to root.

class Solution {
public:
vector<vector<int>> subNumbers(TreeNode *root) {
vector<vector<int>> sums;
if(root == NULL)
return sums;

if(root->left == NULL && root->right == NULL){
vector<int> seq;
seq.push_back(root->val);
sums.push_back(seq);
return sums;
}

vector<vector<int>> left_sums = subNumbers(root -> left);
for(auto item: left_sums) {
item.insert(item.begin(), root->val);
sums.push_back(item);
}

vector<vector<int>> right_sums = subNumbers(root -> right);
for(auto item: right_sums) {
item.insert(item.begin(), root->val);
sums.push_back(item);
}
return sums;
}

int pow10(int n) {
int ret = 1;
for(int i = 0; i < n; i++)
ret = ret * 10;

return ret;
}

int sumNumbers(TreeNode *root) {
// Note: The Solution object is instantiated only once and is reused by each test case.
int sum = 0;
vector<vector<int>> sums = subNumbers(root);
for(auto v : sums){
int tmp_sum = 0;
for(int i = v.size() - 1; i >= 0; i -- ) {
tmp_sum += v[i] * pow10(v.size() - 1 - i);
}
sum += tmp_sum;
}
return sum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: