NC8 二叉树中和为某一值的路径(二)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
/**
* @author xienl
* @description 二叉树中和为某一值的路径(二)
* @date 2022/7/1
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
TreeNode treeNode = new TreeNode(10, new TreeNode(5, new TreeNode(4), new TreeNode(7)), new TreeNode(12));
System.out.println(solution.FindPath(treeNode, 22).toString());
}
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int expectNumber) {
calculation(root, expectNumber, new LinkedList<>());
return res;
}
private void calculation(TreeNode node, int sum, LinkedList<Integer> list){
if (node == null){
return;
}
list.add(node.val);
sum -= node.val;
if (sum == 0 && node.left == null && node.right == null){
res.add(new ArrayList<>(list));
}
calculation(node.left, sum , list);
calculation(node.right, sum, list);
list.removeLast();
}
}
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
public TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}