LeetCode题解——Sum Root to Leaf Numbers
来源:互联网 发布:条形码扫描枪软件 编辑:程序博客网 时间:2024/05/21 09:18
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
.
思路:
对于每一个节点,从该节点到叶结点的path可能有多条,如果我们已经计算得到了该节点左子结点到叶结点的 root-to-leaf path sum,记为 sumleft ,以及该节点右子节点到叶结点的root-to-leaf path sum,记为 sumright , 那么我们怎样通过已知的这两个信息得到当前节点到叶结点的sum,是否还需要额外的信息呢?
答案是需要,首先我们需要知道当前节点(eg. p)到每个叶子节点的长度,这样我们知道当前节点p在这条路径上贡献的值应该为
SUM(p->val*pow(10,di) ; di为每个叶子节点i到当前节点p的长度,这样当前节点p到叶结点的值就可以求出来了:
sump = SUM(p->val*pow(10,di) + sumleft + sumright
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int sumNumbers(TreeNode* root) { vector<int> d; return sumNumbers(root,d); } int sumNumbers(TreeNode* root, vector<int> & d){ if(!root){ d.push_back(0); return 0; } vector<int> d1,d2; int s = 0; if(!root->left && !root->right) {d.push_back(0);return root->val;} if(root->left) s += sumNumbers(root->left,d1); if(root->right) s += sumNumbers(root->right,d2); for(auto j:d1){ d.push_back(j+1); } for(auto j:d2){ d.push_back(j+1); } for(auto i:d){ s+=root->val*pow(10,i); } return s; }};
- LeetCode题解——Sum Root to Leaf Numbers
- LeetCode题解:Sum Root to Leaf Numbers
- LeetCode题解:Sum Root to Leaf Numbers
- LeetCode—Sum Root to Leaf Numbers
- LeetCode 题解(43): Sum Root to Leaf Numbers
- LeetCode题解-129-Sum Root to Leaf Numbers
- LeetCode 129. Sum Root to Leaf Numbers 题解
- LeetCode——Sum Root to Leaf Numbers
- LeetCode——Sum Root to Leaf Numbers
- leetcode 129 —— Sum Root to Leaf Numbers
- leetcode 130 —— Sum Root to Leaf Numbers
- LeetCode129—Sum Root to Leaf Numbers
- leetcode 86: Sum Root to Leaf Numbers
- [LeetCode] Sum root to leaf numbers
- LeetCode : Sum Root to Leaf Numbers
- [leetcode] Sum Root to Leaf Numbers
- 【leetcode】Sum Root to Leaf Numbers
- LeetCode之sum root to leaf numbers
- 代码重构精简
- 图像处理提取图像的奇数行列-学习笔记1
- String、StringBuilder、StringBuffer
- 内部类---局部内部类和匿名内部类
- Java的七种单例模式
- LeetCode题解——Sum Root to Leaf Numbers
- 更新gcc-4.9.3时遇到的错误
- 【GZOJ】1370——名为F的数列
- 南大软院大神养成计划(第二天;认识sublime)
- kafka详解四:Kafka的设计思想、理念
- 泡妞遇双胞胎,她们看见我脑子里的水(一)
- NDK——hello world
- Android(Activity/Fragment)获取控件的大小
- hdu 2389 Rain on your Parade 二分图匹配+HK算法