leetcode 129. Sum Root to Leaf Numbers
2016-03-19 12:30
471 查看
Given a binary tree containing digits from
a number.
An example is the root-to-leaf path
Find the total sum of all root-to-leaf numbers.
For example,
The root-to-leaf path
The root-to-leaf path
Return the sum = 12 + 13 =
class Solution {
long long int vecnodetonum(vector<pair<TreeNode*, bool> >&quene)
{
long long int re = 0;
for (int i = 0; i < quene.size(); i++)
re += ((long long int)(quene[i].first->val))*powl(10, quene.size() - 1 - i);
return re;
}
public:
int sumNumbers(TreeNode* root) {
if (root == NULL)
return 0;
long long int sum = 0;
vector<pair<TreeNode*, bool> >quene;//bool标识当前节点右子树是否被访问过
quene.push_back(pair<TreeNode*, bool>(root, false));
bool f = true;
while (!quene.empty())
{
if (f&&quene.back().first->left != NULL)
quene.push_back(pair<TreeNode*, bool>(quene.back().first->left, false));
else if (quene.back().first->right != NULL)
{
if (quene.back().second == false)
{
f = true;
quene.back().second = true;
quene.push_back(pair<TreeNode*, bool>(quene.back().first->right, false));
}
else
quene.pop_back();
}
else
{
if (quene.back().first->left == NULL
&&quene.back().first->right == NULL)
sum += vecnodetonum(quene);
quene.pop_back(); f = false;
}
}
return sum;
}
};
accepted
0-9only, each root-to-leaf path could represent
a number.
An example is the root-to-leaf path
1->2->3which 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->2represents the number
12.
The root-to-leaf path
1->3represents the number
13.
Return the sum = 12 + 13 =
25.
class Solution {
long long int vecnodetonum(vector<pair<TreeNode*, bool> >&quene)
{
long long int re = 0;
for (int i = 0; i < quene.size(); i++)
re += ((long long int)(quene[i].first->val))*powl(10, quene.size() - 1 - i);
return re;
}
public:
int sumNumbers(TreeNode* root) {
if (root == NULL)
return 0;
long long int sum = 0;
vector<pair<TreeNode*, bool> >quene;//bool标识当前节点右子树是否被访问过
quene.push_back(pair<TreeNode*, bool>(root, false));
bool f = true;
while (!quene.empty())
{
if (f&&quene.back().first->left != NULL)
quene.push_back(pair<TreeNode*, bool>(quene.back().first->left, false));
else if (quene.back().first->right != NULL)
{
if (quene.back().second == false)
{
f = true;
quene.back().second = true;
quene.push_back(pair<TreeNode*, bool>(quene.back().first->right, false));
}
else
quene.pop_back();
}
else
{
if (quene.back().first->left == NULL
&&quene.back().first->right == NULL)
sum += vecnodetonum(quene);
quene.pop_back(); f = false;
}
}
return sum;
}
};
accepted
相关文章推荐
- HDU 小Q系列故事——电梯里的爱情
- 小学算术题
- Android实战简易教程-第七十一枪(异步网络下载网络图片及图片廊制作)
- C#中的Attribute定义及用法
- Codeforces 645D Robot Rapping Results Report 【dp】
- css优先级
- Spark 基础——RDD 详解
- 百钱买百鸡
- Hust oj 1159 MAGI System(大数乘法)
- (6)POI生成Excel文件
- 二叉树:先序中序,递归和非递归遍历
- Html5之基础-5 HTML图像、链接
- Codeforces 645C Enduring Exodus 【二分】
- 年轻人,你为啥使用 Linux
- Android&前端 学习资料
- android:windowSoftInputMode属性详解
- 模板(顺序表与栈)
- Codeforces 645B Mischievous Mess Makers 【逆序对】
- AABB(axis-aligned bounding box)
- 选择器分组和选择器种类