zoukankan      html  css  js  c++  java
  • 113. Path Sum II

    package LeetCode_113
    
    /**
     * 113. Path Sum II
     * https://leetcode.com/problems/path-sum-ii/description/
     * Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
    Note: A leaf is a node with no children.
    Example:
    Given the below binary tree and sum = 22,
    5
    /  
    4    8
    /   /  
    11  13   4
    /      / 
    7 2    5   1
    
    Return:
    [
    [5,4,11,2],
    [5,8,4,5]
    ]
     * */
    
    class TreeNode(var `val`: Int) {
        var left: TreeNode? = null
        var right: TreeNode? = null
    }
    
    class Solution {
        val result = ArrayList<List<Int>>()
        fun pathSum(root: TreeNode?, sum: Int): List<List<Int>> {
            if (root == null) {
                return result
            }
            dfsWithList(root, ArrayList(), 0, sum)
            return result
        }
    
        private fun dfsWithList(root: TreeNode?, list: ArrayList<Int>, currentSum: Int, target: Int) {
            if (root==null){
                return
            }
            list.add(root.`val`)
            if (root.left == null && root.right == null) {
                if (currentSum+root.`val`==target){
                    result.add(ArrayList<Int>(list))
                }
            }
            dfsWithList(root.left,list,currentSum+root.`val`,target)
            dfsWithList(root.right,list,currentSum+root.`val`,target)
            //because is backtracking, so need reset the list for next result
            list.removeAt(list.size-1)
        }
    }
  • 相关阅读:
    poj2186强连通分量
    poj1459SAP最大流模板题
    poj2391Floyd+二分+最大流
    curl上传下载入门
    Mysql存储过程
    小球旋转
    钟表单摆
    java小记 摘抄
    servlet的一些收集总结
    Javascript基础小结
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12873444.html
Copyright © 2011-2022 走看看