• 【LeetCode每日一题】2020.7.07 112. 路径总和


    112. 路径总和(简单)

    给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

    说明: 叶子节点是指没有子节点的节点。

    示例:

    给定如下二叉树,以及目标和 sum = 22,

              ​	   	**5**
              ​	  	/ 
              ​		**4**   8
              ​		/   / 
              ​	**11**  13  4
              ​	/        
               7      **2**      1
    

    分析:

    ​ 二叉树的结构非常适合递归,我们从根结点开始一直到叶子结点,必须在叶子结点满足要求时才是正确答案。沿着路径向下时,必须把路径和作为状态转移下去,因此就有了一个递归函数的模型:

    def checkSum(root TreeNode, cur int) -> bool:
        return checkSum(root.left, cur + root.val) or checkSum(root.right, cur + root.val)
    

    ​ 继续考虑跳出条件,当前结点为叶子结点时递归必须停止,当前结点为空时,递归也不可以继续下去。因此加入:

    if not root:
        return None
    if not root.left and not root.right:
        if cur + root.Val == sum:
            return True
    

    代码(Golang):

    func hasPathSum(root *TreeNode, sum int) bool {
        var checkSum func(root *TreeNode, sum int) bool
        checkSum = func(root *TreeNode, cur int) bool {
            if root == nil {
                return false
            }
            if root.Val + cur == sum && root.Left == nil && root.Right == nil {
                return true
            }
            return checkSum(root.Left, cur + root.Val) || checkSum(root.Right, cur + root.Val)
        }
    
        return checkSum(root, 0)
    }
    
  • 相关阅读:
    (九)栈上分配与逃逸分析
    (八)内存分配策略
    (七)垃圾收集器
    (六)垃圾回收算法
    (五)垃圾回收之判定垃圾对象
    (四)java对象的结构和对象的访问定位
    (三)java虚拟机内存管理和线程独占区和线程共享区
    Spark SQL1.2与HDP2.2结合
    待整理
    Ambari部署HDP:HBase Master启动后自动消失
  • 原文地址:https://www.cnblogs.com/enmac/p/13267105.html
Copyright © 2020-2023  润新知