zoukankan      html  css  js  c++  java
  • Leetcode刷题日记(2020.6.10):求和路径

    题目如下:

     思路:

    首先说下,这是典型的二叉树的题目,用递归便能解决

    算法流程:

    1.首先进行安全检查,如果空树,那么直接返回0
    2.首先我们从根节点出发,去遍历这个根节点下所有满足条件的路径数目,
    每次到达一个节点,将传入的参数sum减去root的val,这是一个递归。
    然后我们需要遍历所有的根节点,那么又需要一个递归去遍历。两层递归。
    代码如下:
     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 """
     4 # @Time : 2020/6/10 9:42 
     5 
     6 # @Author : ZFJ
     7 
     8 # @File : 求和路径.py 
     9 
    10 # @Software: PyCharm
    11 """
    12 
    13 
    14 # Definition for a binary tree node.
    15 # class TreeNode(object):
    16 #     def __init__(self, x):
    17 #         self.val = x
    18 #         self.left = None
    19 #         self.right = None
    20 
    21 class Solution(object):
    22     def pathSum(self, root, sum):
    23         """
    24         本题属于典型的递归的解题方法
    25         1.首先进行安全检查,如果空树,那么直接返回0
    26         2.首先我们从根节点出发,去遍历这个根节点下所有满足条件的路径数目,
    27         每次到达一个节点,将传入的参数sum减去root的val,这是一个递归。
    28         然后我们需要遍历所有的根节点,那么又需要一个递归去遍历。两层递归。
    29         :type root: TreeNode
    30         :type sum: int
    31         :rtype: int
    32         """
    33         if not root:
    34             return 0
    35         return self.path(root, sum) + self.pathSum(root.left, sum) + self.pathSum(root.right, sum)
    36 
    37     def path(self, root, sum):
    38         if not root:
    39             return 0
    40         result = 0
    41         if root.val == sum:
    42             result += 1
    43         result += self.path(root.left, sum - root.val)
    44         result += self.path(root.right, sum - root.val)
    45         return result


  • 相关阅读:
    gflag使用
    INTERVIEW #2
    Decision Tree
    Java FAQ
    K-Nearest Neighbors
    INTERVIEW #1
    C++ FAQ
    INTERVIEW #0
    Selection Sort
    TCP 3-Way Handshake
  • 原文地址:https://www.cnblogs.com/ZFJ1094038955/p/13083389.html
Copyright © 2011-2022 走看看