您的位置:首页 > Web前端

剑指offer 二叉树中和为某一值的路径

2016-04-20 14:18 393 查看
题目描述

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

ArrayList<ArrayList<Integer>> results = new ArrayList<>();

public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
if (root == null) {
return new ArrayList<>();
}
int curSum = 0;
int[] path = new int[1002];
int index= 0;
FindPath(root,target,path,index,curSum);
return results;
}

public void FindPath(TreeNode root,int target,int[] path,int index,int curSum){
if (root == null) {
return;
}
curSum += root.val;
path[index++] = root.val;
boolean isLeaf = root.left == null && root.right == null;
if (curSum == target && isLeaf) {
ArrayList<Integer> plist = new ArrayList<>();
for (int i = 0; i < index; ++i) {
plist.add(path[i]);
}
results.add(plist);
return;
}
if (curSum < target && root.left != null) {
FindPath(root.left,target,path,index,curSum);
}
if (curSum < target && root.right != null) {
FindPath(root.right,target,path,index,curSum);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉树