大家好我是苏麟 ......
路径总和2
描述 :
给你二叉树的根节点 root
和一个整数目标和 targetSum
,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
叶子节点 是指没有子节点的节点。
题目 :
LeetCode 113.路径总和2
113. 路径总和 II
分析 :
这道题是路径求和的加强版 , 但也不难 . 路径求和是一条 , 而这道题是找出所有从根节点到叶子节点路径总和等于给定目标和的路径。这道题的思路就是从根节点往下递归的时候往集合里添加元素,从叶子节点往上递归的时候删除元素 , 只要理解这个这道题就迎刃而解了 .
解析 :
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
List<List<Integer>> list = new ArrayList<>();
LinkedList<Integer> onelist = new LinkedList<>();
public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
pathAll(root,targetSum);
return list;
}
public void pathAll(TreeNode root,int targetSum) {
if(root == null){
return;
}
targetSum -= root.val;
onelist.add(root.val);
if(root.left == null && root.right == null){
if(targetSum == 0){
list.add(new ArrayList(onelist));
}
}
pathAll(root.left,targetSum);
pathAll(root.right,targetSum);
onelist.removeLast();
}
}
这期就到这里 , 下期见!