zoukankan      html  css  js  c++  java
  • 34. 二叉树中和为某一值的路径

    class Solution:
        def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
            res=[]
            def traceback(node,trace,sum):
                if not node:
                    return 
                if node.val==sum and (not node.left) and (not node.right):
                    res.append(trace+[node.val])
                    return
                if node.left:
                    traceback(node.left,trace+[node.val],sum-node.val)
                if node.right:
                    traceback(node.right,trace+[node.val],sum-node.val)
            traceback(root,[],sum)
            return res
    class Solution:
        def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
            res, path = [], []
            def dfs(node, sum):
                #递归出口:解决子问题
                if not node: return #如果没有节点(node = None),直接返回,不向下执行
                else:               #有节点
                    path.append(node.val) #将节点值添加到path
                    sum -= node.val 
                # 如果节点为叶子节点,并且 sum == 0
                  if not node.left and not node.right and not sum: 
                      res.append(path[:]) 
                  dfs(node.left, sum) #递归处理左边
                  dfs(node.right, sum) #递归处理右边
                  path.pop() #处理完一个节点后,恢复初始状态,为node.left,  node.right操作
            dfs(root, sum)
            return res
  • 相关阅读:
    NOIP2016提高A组五校联考3总结
    【JZOJ4807】破解
    poj3659树状DP
    hdu1054 树状dp
    poj 1190 DFS 不等式放缩进行剪枝
    树状dp ural1018
    hdu1520 第一道树形DP,激动哇咔咔!
    动态规划复习
    poj2251 三维简单BFS
    hdu1272并查集入门
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/12665032.html
Copyright © 2011-2022 走看看