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

    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]
    ]

    Time: O(N)
    Space: O(Height)

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
            res, lst = [], []
            self.helper(root, sum, res, lst)
            return res
        
        def helper(self, root, sum, res, lst):
            if root is None:
                return
            if root.left is None and root.right is None:
                if sum == root.val:
                    lst.append(root.val)
                    res.append(list(lst))
                    lst.pop()
                    return
            lst.append(root.val)
            left = self.helper(root.left, sum - root.val, res, lst)
            right = self.helper(root.right, sum - root.val, res, lst)
            lst.pop()
           
  • 相关阅读:
    vijos 1379 字符串的展开
    BZOJ 4597 随机序列
    BZOJ 2303 方格染色
    BZOJ 2654 tree
    BZOJ 4198 荷马史诗
    BZOJ 1555 KD之死
    不重复数字
    Rails
    Train Problem I
    Key Set HDU
  • 原文地址:https://www.cnblogs.com/xuanlu/p/11690491.html
Copyright © 2011-2022 走看看