二叉树中路为指定树的路径
递归中的三个要素是
特值判断
递归停止的条件
继续递归
pathSum(root.left, sum-root.val); 类似前序遍历 这是1 一直沿左走到叶节点
pathSum(root.right,sum-root.val); 这是2 沿左走到最近的父节点 往右走
第一次 pathSum(root.left, sum-root.val) 8 4 11 7
第二次 向上递归 到11 pathSum(root.right,sum-root.val); 5 4 11 12
第三次 再向上返回到4 5 8 13
第三次 向上返回到8 5 8 4 5
第四次 向上返回到4 5 8 4 1
import java.util.*;
class Solution {
List<Integer> list = new ArrayList<>();
List<List<Integer>> result = new ArrayList<>();
public List<List<Integer>> pathSum(TreeNode root, int sum) {
if(root == null ) return result;
list.add(root.val);
if(root.left == null && root.right == null && sum == root.val){
result.add(new ArrayList<Integer>(list));
}
pathSum(root.left, sum-root.val);
pathSum(root.right,sum-root.val);
//说明最后一次加入的节点不合适
list.remove(list.size() -1);
return result;
}
}