[Tree]112. Path Sum

  • 分类:Tree
  • 时间复杂度: O(n) 这种把树的节点都遍历一遍的情况时间复杂度为O(n)
  • 空间复杂度: O(h) 树的节点的深度

112. Path Sum

Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path 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      1

return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.

代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def hasPathSum(self, root: 'TreeNode', sum: 'int') -> 'bool':
        
        if root==None:
            return False
        
        return self.helper(root,sum)
        
    def helper(self,root,sum):
        res=sum-root.val
        if root.left==None and root.right==None:
            if res==0:
                return True
            else:
                return False
        elif root.left==None:
            return self.helper(root.right,res)
        elif root.right==None:
            return self.helper(root.left,res)
        else:
            return self.helper(root.left,res) or self.helper(root.right,res)

讨论:

1.虽然折腾了半天,但是这个代码是自己写的还是非常自豪滴!
2.出口要设置的对

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,452评论 0 10
  • path sum 有好几题,是一个系列。 原题是: Given a binary tree and a sum, ...
    小双2510阅读 242评论 0 0
  • 41、日期和时间: 如何取得年月日、小时分钟秒? 如何取得从1970年1月1日0时0分0秒到现在的毫秒数? 如何取...
    凯睿看世界阅读 231评论 0 0
  • 一、什么是考研? 考研指全国硕士研究生统一招生考试(Unified National Graduate Entra...
    35度C阅读 338评论 0 1
  • Lua中提供的元表是用于帮助Lua数据变量完成某些非预定义功能的个性化行为,如两个table的相加。假设a和b都是...
    songjk阅读 307评论 0 0