题解 | #二叉树中和为某一值的路径(二)#
二叉树中和为某一值的路径(二)
http://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
/**
*
* @param root TreeNode类
* @return int整型
*/
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int expectNumber) {
if(root!=null) {
dg(root, new ArrayList<>(), expectNumber);
}
return result;
}
private void dg (TreeNode root, ArrayList<Integer> lj, int expectNumber) {
if(root==null) return;
lj.add(root.val);
if(root.left==null && root.right==null){ // 叶子节点,判断值与期望值是否相同
if(root.val==expectNumber){
result.add(new ArrayList<>(lj));
}
}
expectNumber -= root.val;
if(root.left!=null) dg(root.left, lj, expectNumber); // 遍历左子节点
if(root.right!=null) dg(root.right, lj, expectNumber); // 遍历右子节点
lj.remove(lj.size() - 1);
}
}