1. 程式人生 > >【leetcode】113.(Medium)Path Sum II

【leetcode】113.(Medium)Path Sum II

解題思路:
遞迴


提交程式碼:

class Solution {
    public List<List<Integer>> pathSum(TreeNode root, int sum) {
        List<List<Integer>>	res=new ArrayList<List<Integer>>();
        if(root==null)	return res;
        List<Integer> curPath=new ArrayList<Integer>
(); curPath.add(root.val); if(root.left==null&&root.right==null&&root.val==sum) { res.add(curPath); return res; } if(root.left!=null) { curPath.add(root.left.val); findPath(root.left,curPath,sum-root.val,res);
curPath.remove((Integer)root.left.val); } if(root.right!=null) { curPath.add(root.right.val); findPath(root.right,curPath,sum-root.val,res); } return res; } private void findPath(TreeNode root,List<Integer> curPath, int
sum,List<List<Integer>> res) { if(root==null) return; if(root.left==null&&root.right==null&&root.val==sum) { res.add(new ArrayList<>(curPath)); return; } if(root.left!=null) { curPath.add(root.left.val); findPath(root.left,curPath,sum-root.val,res); curPath.remove(curPath.size()-1); } if(root.right!=null) { curPath.add(root.right.val); findPath(root.right,curPath,sum-root.val,res); curPath.remove(curPath.size()-1); } } private void removeValue(int val,List<Integer> path) { for(int i=path.size()-1;i>=0;i--) { if(path.get(i)==val) { path.remove(i); break; } } } }

執行結果:
在這裡插入圖片描述