leetcode 113 Path Sum II

来源:互联网 发布:互联网租车平台知豆 编辑:程序博客网 时间:2024/05/22 05:28

采用深度优先与回溯相结合的算法

/**

 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public List<List<Integer>> pathSum(TreeNode root, int sum) {
        List<List<Integer>>res=new LinkedList<List<Integer>>();
List<Integer>curlist=new ArrayList<Integer>();
pathSum(root,sum,res,curlist);
return res;
    }
public void pathSum(TreeNode root,int sum,List<List<Integer>>list,List<Integer>curlist){
if(root==null)return;
curlist.add(new Integer(root.val));
if(root.left==null&&root.right==null&&root.val==sum)//叶子节点若满足该条件则为所求的路
{
list.add(new ArrayList(curlist));
curlist.remove(curlist.size()-1);//移除该节点,因为同属于同一个父节点的叶子节点可能与该节点值相同
return;
}
else{
 pathSum(root.left,sum-root.val,list,curlist);
 pathSum(root.right,sum-root.val,list,curlist);
}
curlist.remove(curlist.size()-1);
}
}
0 0
原创粉丝点击