给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值
的路径。
一个有效的路径,指的是从根节点到叶节点的路径。
给定一个二叉树,和 目标值 = 5
:
1
/ \
2 4
/ \
2 3
返回:
[ [1, 2, 2], [1, 4] ] 代码如下 前序遍历二叉树
/** * Created by JZloveSnow on 16/3/7. */ class TreeNode { public int val; public TreeNode left,right; public TreeNode(int val) { this.val = val; this.left = this.right = null; } } class Solution14 { public List<List<Integer>> binaryTreePathSum(TreeNode root, int target) { List<List<Integer>> result = new ArrayList<List<Integer>>(); List<Integer> path = new ArrayList<Integer>(); if (root == null) return result; path.add(root.val); helper(root,path,root.val,target,result); return result; } public void helper(TreeNode root, List<Integer>path, int sum, int target, List<List<Integer>> result) { if (root.left == null && root.right == null) { if (sum == target) { result.add(new ArrayList<Integer>(path)); } } if (root.left != null) { path.add(root.left.val); helper(root.left, path, sum+root.left.val, target, result); path.remove(path.size()-1); } if (root.right != null) { path.add(root.right.val); helper(root.right, path, sum+root.right.val, target, result); path.remove(path.size()-1); } } }