美文网首页
[Tree]112. Path Sum

[Tree]112. Path Sum

作者: 野生小熊猫 | 来源:发表于2019-02-23 05:16 被阅读0次
  • 分类: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.出口要设置的对

相关文章

网友评论

      本文标题:[Tree]112. Path Sum

      本文链接:https://www.haomeiwen.com/subject/gxruyqtx.html