113. 路徑總和 II mark

神偷奶爸發表於2020-12-31

題目:

做的不好

    // 注意要的是根節點到葉子結點的路徑,中間的不算
    // 注意,提上沒說沒有負數,因此必須將每個葉子結點的路徑都遍歷到,不可以剪枝

程式碼: 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    // 注意要的是根節點到葉子結點的路徑,中間的不算
    // 注意,提上沒說沒有負數,因此必須將每個葉子結點的路徑都遍歷到,不可以剪枝
    List<List<Integer>> ans =new ArrayList();
    List<Integer> temp =new ArrayList();
    public List<List<Integer>> 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<Integer>(temp));
        }       
        dfs(root.left,sum);
        dfs(root.right,sum);
        temp.remove(temp.size()-1);
    }
}

 

 

相關文章