LeetCode113路徑總和2

給定一個二叉樹和一個目標和,找到所有從根節點到葉子節點路徑總和等於給定目標和的路徑。

說明: 葉子節點是指沒有子節點的節點。

示例:
給定如下二叉樹,以及目標和 sum = 22,

          5
         / \
        4   8
       /   / \
      11  13  4
     /  \    / \
    7    2  5   1
/**
 * 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<>();
    public void robot(TreeNode node,int sum,List<Integer> list){
        if(node==null)
            return;
        if(node.left==null&&node.right==null&&sum==node.val){
            List<Integer> temp2=new ArrayList<>(list);//這裏要重新copy出來,因爲list會變
            temp2.add(node.val);
            ans.add(temp2);
            return;
        }
        list.add(node.val);
        robot(node.left,sum-node.val,list);
        robot(node.right,sum-node.val,list);
        list.remove(list.size()-1);
    }
    
    public List<List<Integer>> pathSum(TreeNode root, int sum) {
      List<Integer> tmp=new ArrayList<>();
      robot(root,sum,tmp);
      return ans;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章