题目:

输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)

分析:

LeetCode上有一道相同的题目,以前记录过:LeetCode 113. Path Sum II路径总和 II (C++),就不再讲解了。

程序:

C++

class Solution {
public:
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
vector<int> v;
dfs(root, v, expectNumber);
return res;
}
void dfs(TreeNode* root, vector<int> &v, int sum){
if(root == nullptr)
return;
v.push_back(root->val);
if(root->left == nullptr && root->right == nullptr){
if(sum == root->val)
res.push_back(v);
}
else{
dfs(root->left, v, sum-root->val);
dfs(root->right, v, sum-root->val);
}
v.pop_back();
}
private:
vector<vector<int>> res;
};

Java

import java.util.ArrayList;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null; public TreeNode(int val) {
this.val = val; } }
*/
public class Solution {
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
res = new ArrayList<>();
ArrayList<Integer> l = new ArrayList<>();
dfs(root, l, target);
return res;
}
public void dfs(TreeNode root, ArrayList<Integer> l, int sum){
if(root == null)
return;
l.add(root.val);
if(root.left == null && root.right == null){
if(root.val == sum){
res.add(new ArrayList(l));
}
}
else{
dfs(root.left, l, sum-root.val);
dfs(root.right, l, sum-root.val);
}
l.remove(l.size()-1);
}
private ArrayList<ArrayList<Integer>> res;
}

最新文章

  1. Windows如何修改MySQL用户root密码
  2. Bootstrap Table 表格参数详解
  3. AngularJs自定义指令详解(2) - template
  4. mysql 日志
  5. 第一次sprint团队贡献分改
  6. 关于java的static关键字
  7. Android(java)学习笔记213:开源框架post和get方式提交数据(qq登录案例)
  8. java 手动清理缓存的方法
  9. xml 充当简易数据库
  10. 2017-2-24 C#基础 for循环的嵌套
  11. 【干货分享】sketch 前端开发常用技巧总结
  12. CSS3学习笔记(4)-CSS3函数
  13. 推荐多线程下载工具axel替代wget
  14. mui框架下拉刷新和上拉刷新
  15. MDX 脚本语句 -- Scope
  16. 团队项目第二周spec设计
  17. thinkphp3.2 导航高亮显示
  18. 慕课网 深入浅出javascript 笔记
  19. 4星|《财经》2018年第10期:远程视界自我定位为“专科远程医疗联合体O2O平台”,主要盈利模式就是做融资租赁
  20. MySQL 常用语法 之 UNION与UNION ALL

热门文章

  1. JavaScript-----6.流程控制:分支
  2. Leetcode 153. 寻找旋转排序数组中的最小值
  3. docker /var/lib/docker/aufs/mnt 目录满了怎么清理
  4. nowcoder3274D binary
  5. Tarjan在图论中的应用(三)——用Tarjan来求解2-SAT
  6. php 数组赋值
  7. 用 Python 批量下载百度图片
  8. pyqt5多线程-简单例子
  9. JeeSite | 保存信息修改记录
  10. 企业如何做好B2C电商平台