113. 路径总和 II mark

题目:

做的不好

113. 路径总和 II mark_第1张图片

    // 注意要的是根节点到叶子结点的路径,中间的不算
    // 注意,提上没说没有负数,因此必须将每个叶子结点的路径都遍历到,不可以剪枝

代码: 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    // 注意要的是根节点到叶子结点的路径,中间的不算
    // 注意,提上没说没有负数,因此必须将每个叶子结点的路径都遍历到,不可以剪枝
    List> ans =new ArrayList();
    List temp =new ArrayList();
    public List> pathSum(TreeNode root, int sum) {
        dfs(root,sum);
        return ans;
    }   
    public void dfs(TreeNode root,int sum){
        if(root==null){
            return;
        }
        temp.add(root.val);
        sum-=root.val;
        if(sum==0&&root.left==null&&root.right==null){
            ans.add(new ArrayList(temp));
        }       
        dfs(root.left,sum);
        dfs(root.right,sum);
        temp.remove(temp.size()-1);
    }
}

 

 

你可能感兴趣的:(LeetCode相关)