LeetCode 113. Path Sum II
来源:互联网 发布:网络直播开场白 编辑:程序博客网 时间:2024/06/14 17:50
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:Given the below binary tree and
sum = 22
,5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1
return
[ [5,4,11,2], [5,8,4,5]]
题目要求:
给出一个数sum,要求找到所有的满足根到叶子结点的和为sum的路径。
采用深度遍历的方法,需要注意的有以下两点:
1.结点的值可能为负数;
2由于采用的是同一个vector类型的变量temp来存储路径,因此,需要记得出栈。
算法过程如下:
1.判断结点是否为空,如果为空,则返回;
2.将目标值sum减去结点值root->val,并将该结点加入到vector<int>类型的变量temp中。判断,如果sum值为0,且该结点为叶子结点,则将temp放入结果result中。
什么时候出栈呢?这是重点考虑的问题,如果在遍历之前出栈,那么毫无疑问,子结点的路径中不会有该结点,如果在到达子结点的时候出栈,那么将只有叶子结点出栈,向例子中[5,8,4,2]就会加入11这个结点。因此正确的做法应当是,在遍历子树之后出栈。保证,每次进栈都会有一次出栈。
代码实现如下:
void getResult(TreeNode* root,int sum,vector<int> &temp,vector<vector<int> > &result){if(root==NULL)return ;sum=sum - root->val;temp.push_back(root->val);if(sum==0&&!root->left && !root->right)result.push_back(temp);getResult(root->left,sum,temp,result);getResult(root->right,sum,temp,result);temp.pop_back();}class Solution {public: vector<vector<int> > pathSum(TreeNode* root, int sum) { vector<vector<int> > result; vector<int> temp; getResult(root,sum,temp,result); return result; }};
0 0
- LeetCode 113. Path Sum II
- [LeetCode]113.Path Sum II
- [Leetcode] 113. Path Sum II
- [leetcode] 113.Path Sum II
- [LeetCode]113. Path Sum II
- LeetCode: 113. Path Sum II
- leetcode 113. Path Sum II
- 113. Path Sum II LeetCode
- leetcode 113. Path Sum II
- LeetCode *** 113. Path Sum II
- Leetcode 113. Path Sum II
- LeetCode 113. Path Sum II
- LeetCode 113. Path Sum II
- LeetCode - 113. Path Sum II
- Leetcode 113. Path Sum II
- [LeetCode] 113. Path Sum II
- [leetcode] 113. Path Sum II
- [LeetCode] 113. Path Sum II
- Java程序片段 之动态生成表格
- (ZT)Change default Program Files installation directory location in Windows
- fastjson和jackson的简单对比
- Java笔记
- 软件开发--面试笔试题集锦
- LeetCode 113. Path Sum II
- [BZOJ2196]Brownie Slicing 二分答案
- NotePad++快捷键大全
- 数据库技术
- #include< > 和 #include” ” 的区别以及绝对地址引用\\以及cvLoadImage和imread
- Huffman编解码
- notepad++的好用快捷键整理
- LDR,ADRL,ADR,NOP伪指令
- C++抽象编程——面向对象(2)——结构体与类