Leetcode 113. Path Sum II 路径和2 解题报告

来源:互联网 发布:程序员年入百万 编辑:程序博客网 时间:2024/05/21 19:36

1 解题思想

这道题和Leetcode 112是同宗的,112只要求输出是否存在一个Case,而这题要求输出所有Case的路径。
方法基本是一样他,遍历到底的时候保存一下路径就好

Leetcode 112. Path Sum 路径和 解题报告

2 原题

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum. For example:Given the below binary tree and sum = 22,               5             / \            4   8           /   / \          11  13  4         /  \    / \        7    2  5   1return[   [5,4,11,2],   [5,8,4,5]]Subscribe to see which companies asked this question

3 AC解

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */ /**  * 和原来的不一样,这题要完全遍历,使用track跟踪当前的进度,进入dfs时压进去,出dfs时推出,当时叶节点且和正好为0是,克隆添加到结果中。  * */public class Solution {    List<List<Integer>> list;    LinkedList<Integer> track;    public void dfs(TreeNode root,int sum){        if(root==null)            return;        sum-=root.val;        track.add(root.val);        if(sum==0 && root.left==null && root.right==null)            list.add((LinkedList<Integer>)track.clone());        dfs(root.left,sum);        dfs(root.right,sum);        track.remove(track.size()-1);    }    public List<List<Integer>> pathSum(TreeNode root, int sum) {        this.list=new ArrayList<List<Integer>>();        this.track=new LinkedList<Integer>();        dfs(root,sum);        return this.list;    }}
0 0
原创粉丝点击