二叉树中和为某一值的路径
2015-09-06 20:26
218 查看
题目描述
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路:
1、节点为空,直接返回
2、节点不为空,把节点的数值压入路径中,如果节点的值等于路径剩余的值且是叶子节点,把该路径加入到路径集合中,并把路径中的该节点弹出;否则遍历左子树右子树(剩余的值为上一层值减去本节点的值),最后在弹出该节点;
代码:
void Path(TreeNode* root,int exNum,vector<int> &v,vector<vector<int>> &vv){ if(root == NULL) return; v.push_back(root->val); if(root->val == exNum && root->left == NULL && root->right == NULL){ vv.push_back(v); v.pop_back(); }else{ Path(root->left,exNum - root->val,v,vv); Path(root->right,exNum - root->val,v,vv); v.pop_back(); } } public: vector<vector<int> > FindPath(TreeNode* root,int expectNumber) { vector<vector<int>> vv; if(root == NULL) return vv; vector<int> v; Path(root,expectNumber,v,vv); return vv; }
相关文章推荐
- hdu4876ZCC loves cards 暴搜+剪枝
- 🍭
- java基础复习 - 自动装箱
- Oracle学习笔记20150906序列
- delphi多线程
- XCode快捷键
- HDU 1811 Rank of Tetris -- 并查集+拓扑排序
- hadoop job yarn 命令
- 09-06 Fragment(碎片)
- Greedy:Fence Repair(POJ 3252)
- 初识JAVA
- CSS,给我们不一样的体验
- Ubuntu安装Torque教程
- 关于 UITableViewCell 的重用,需注意:
- Android ViewPager+Fragment 模式中 Fragment的返回键的处理
- Java序列化
- ViewPager的用法
- Kafka->SparkStreaming
- iOS中Keychain保存用户名和密码
- 存储之王——XML