您的位置:首页 > 其它

leetcode 113 Path Sum II

2016-10-18 22:37 393 查看
采用深度优先与回溯相结合的算法

/**

 * 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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: