34. 二叉树中和为某一值的路径

Posted ustc-zcc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

  

 

以上是关于34. 二叉树中和为某一值的路径的主要内容,如果未能解决你的问题,请参考以下文章

剑指 Offer 34. 二叉树中和为某一值的路径附完整可运行代码

LeetCode | 面试题34. 二叉树中和为某一值的路径剑指OfferPython

leetcode-剑指 Offer 34二叉树中和为某一值的路径

34. 二叉树中和为某一值的路径

Java 剑指offer(34) 二叉树中和为某一值的路径

面试题34. 二叉树中和为某一值的路径(dfs)