题解 | #二叉树根节点到叶子节点和为指定值的路径#

二叉树根节点到叶子节点和为指定值的路径

http://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @param sum int整型 
     * @return int整型ArrayList<ArrayList<>>
     */
    public ArrayList<ArrayList<Integer>> pathSum (TreeNode root, int sum) {
        // write code here
        ArrayList<ArrayList<Integer>> outerList = new ArrayList<>();
        ArrayList<Integer> innerList = new ArrayList<>();

        if(root == null){
            return outerList;
        }
        int hasSum = 0;
        dfs(root, outerList, innerList, hasSum, sum);

        return outerList;
    }

    public void dfs(TreeNode root, ArrayList<ArrayList<Integer>> outerList, ArrayList<Integer> innerList, int hasSum, int total){
        hasSum += root.val;
        innerList.add(root.val);
        if(hasSum == total && root.left == null && root.right == null){
            outerList.add(new ArrayList<>(innerList));
        }
        if(root.left != null){ 
            // 必须要传副本过去
            dfs(root.left, outerList, new ArrayList<>(innerList), hasSum, total);
        }

        if(root.right != null){
            dfs(root.right, outerList, new ArrayList<>(innerList), hasSum, total);
        }
    }
}
全部评论

相关推荐

头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务