113路径总和II

题目: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

来源: https://leetcode-cn.com/problems/path-sum-ii/

法一: 自己的代码, 没有官方题解

思路: 递归实现,类似前序遍历

# 执行用时 :44 ms, 在所有 python3 提交中击败了99.18% 的用户
# 内存消耗 :14.2 MB, 在所有 python3 提交中击败了98.55%的用户
# Definition for a binary tree node.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
from typing import List
class Solution:
    def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
        results = []
        res= []
        s = 0
        def recursion(root,s):
            # 如果遍历到一个分支的底了,则为空节点,返回True,继续遍历
            if root == None:
                return True
            res.append(root.val)
            # 注意不传s不行,全局变量s指向不可变对象,只能在里面调用,不能修改
            s = s + root.val
            a = recursion(root.left,s)
            b = recursion(root.right,s)
            # 如果到叶节点了,且和也满足条件,则存储
            if a and b:
                if s == sum:
                    results.append(res[:])
            s = s - root.val
            # 注意这里res是个全局变量,且因为指向可变对象所以可以修改,每次函数结束时,res中的
            # 内容不会自定返回到调用前的状态,所以需要出栈来恢复状态
            res.pop()
        recursion(root,s)
        return results
if __name__ == ‘__main__‘:
    duixiang = Solution()

    root = TreeNode(8)
    a = TreeNode(4)
    b = TreeNode(9)
    root.left = a
    root.right = b

    al = TreeNode(3)
    ar = TreeNode(6)
    a.left = al
    a.right = ar

    arl = TreeNode(5)
    arr = TreeNode(7)
    ar.left = arl
    ar.right = arr
    sum = 17
    a = duixiang.pathSum(root,sum)
    print(a)

原文地址:https://www.cnblogs.com/xxswkl/p/12001818.html

时间: 2024-10-04 01:52:38

113路径总和II的相关文章

LeetCode 113. 路径总和 II(Path Sum II)

题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / 4 8 / / 11 13 4 / \ / 7 2 5 1 返回: [ [5,4,11,2], [5,8,4,5] ] 解题思路 从树根开始遍历,记录当前路径和,递归向下访问子节点并添加到路径中,若碰到叶节点,判断当前路径和是否等于目标值,若等于就把当前路径加入到结果集中. 代码 1 /** 2 *

LeetCode 113 路径总和II

题目 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 思路 采用先序遍历二叉树,可以方便得到各个根节点到叶节点路径,比较目标和. 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(N

113. 路径总和 II

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径.说明: 叶子节点是指没有子节点的节点. 代码实现: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solu

Leetcode 113. 路径总和 II

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int>> res; vector<int> aux

113 Path Sum II 路径总和 II

给定一个二叉树和一个和,找到所有从根到叶路径总和等于给定总和的路径.例如,给定下面的二叉树和 sum = 22,              5             / \            4   8           /   / \          11  13  4         /  \    / \        7    2  5   1返回[   [5,4,11,2],   [5,8,4,5]] 详见:https://leetcode.com/problems/path

路径总和 II

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回: [ [5,4,11,2], [5,8,4,5]] code /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *lef

LeetCode 113. Path Sum II路径总和 II (C++)

题目: 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

路径总和I、II、III

1. 112题 题目地址:https://leetcode-cn.com/problems/path-sum/description/ 题目描述:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 解决方案:  递归判断 2. (二)113题 题目地址:https://leetcode-cn.com/problems/path-sum-ii/description/ 题目描述:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等

【LeetCode】113. Path Sum II 基于Java和C++的解法及分析

113. Path Sum II Total Accepted: 80509 Total Submissions: 284188 Difficulty: Medium Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum. For example: Given the below binary tree and sum = 22, 5 / 4 8