129. Sum Root to Leaf Numbers
2015-08-14 21:06
323 查看
Given a binary tree containing digits from
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 =
分析:简单的树的遍历,下面代码使用队列,没有使用递归,队列节点除了存储节点地址还存储了从根节点到该节点路径表示的值。
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.
分析:简单的树的遍历,下面代码使用队列,没有使用递归,队列节点除了存储节点地址还存储了从根节点到该节点路径表示的值。
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: struct Qnode { int sum_; TreeNode* p_; Qnode(int s, TreeNode *p):sum_(s),p_(p){} Qnode(){} }; int sumNumbers(TreeNode *root) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. if(root == NULL)return 0; queue<Qnode> myqueue; myqueue.push(Qnode(root->val, root)); int res = 0; while(myqueue.empty() == false) { Qnode tmp = myqueue.front(); myqueue.pop(); if(tmp.p_->left == NULL && tmp.p_->right == NULL) res += tmp.sum_; else { if(tmp.p_->left != NULL) myqueue.push(Qnode(tmp.sum_*10 + tmp.p_->left->val, tmp.p_->left)); if(tmp.p_->right != NULL) myqueue.push(Qnode(tmp.sum_*10 + tmp.p_->right->val, tmp.p_->right)); } } return res; } };
相关文章推荐
- JavaScript类型检测汇总
- 添加多盟SDK 库函数
- JDBC入门try/catch型
- 【bugfree】安装
- 用dfs序维护树结构
- 【 LightOJ - 1094】Farthest Nodes in a Tree(求树的直径)链式向前星 + DFS or BFS
- 为什么我还不推荐内存中OLTP给用户
- python菜鸟日记7
- UVALive 5840 数学题
- ASP入门(十)-Session对象
- win10和office2013激活
- 黑马程序员 多线程
- 继承与base
- 一个测试 unix 时间戳的程序
- 《算法导论》第一讲
- 动态规划算法
- 如何安装xampp
- Contest 7 1011 Mahjong tree【递归/树】
- Java并发编程:深入剖析ThreadLocal
- 首次设置ROOT密码