113. Path Sum II
来源:互联网 发布:mysql取最近一条记录 编辑:程序博客网 时间:2024/05/29 15:46
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]]
【问题分析】
这个问题和Path Sum类似,提高了一些要求:
1、结束条件不同,找到满足条件的路径后不能直接结束,需要继续寻找可能满足条件的路径
2、要求把找到的路径保存下来
【AC代码】
class Solution {public: vector<vector<int>> pathSum(TreeNode* root, int sum) { std::vector<int> path; std::vector<std::vector<int> > paths; if (root == NULL) { //返回所有结果路径集合 //paths.push_back(path); //the key point return paths; } if (root->left == NULL && root->right == NULL) { //遇到叶子节点,获取当前路径,并加入结果路径集合中 if (root->val == sum) { path.push_back(sum); paths.push_back(path); } return paths; } if (root->left != NULL) { std::vector<std::vector<int> > lpaths = pathSum(root->left, sum - root->val); //获取左子节点的所有路径 for (int i = 0; i < lpaths.size(); ++i) { //将当前节点插入到每条路径的起始位置 lpaths[i].insert(lpaths[i].begin(), root->val); paths.push_back(lpaths[i]); } } if (root->right != NULL) { std::vector<std::vector<int> > rpaths = pathSum(root->right, sum - root->val); //获取右子节点的所有路径 for (int i = 0; i < rpaths.size(); ++i) { rpaths[i].insert(rpaths[i].begin(), root->val); //将当前节点插入到每条路径的起始位置 paths.push_back(rpaths[i]); } } return paths; }};
0 0
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- SSO单点登录
- Redis主从读数据不一致与hmget()获取字段为null的问题解析
- 如何入门微信小程序开发
- wireshark:7116): Gtk-WARNING **: cannot open display: :0.0解决方法
- MYSQL实践心得:table_open_cache的设置
- 113. Path Sum II
- mavan 常用命令
- postgresql命令行
- 只有mdf文件和ldf文件--怎么恢复数据库
- NSTimer/CADisplayLink/GCD
- css3:display前端弹性盒布局
- Java 基础
- PHP 的函数
- 性能测试关注的mysql变量