Path Sum

来源:互联网 发布:初中生编程培训 编辑:程序博客网 时间:2024/09/21 06:42

题目详情:https://leetcode.com/problems/path-sum/description/
本题中设置isLeaf的原因是避免出现[1,2],sum=1的情况,即必须是从根节点到叶子节点

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneimport sysclass Solution(object):    def hasPathSum(self, root, sum):        """        :type root: TreeNode        :type sum: int        :rtype: bool        """        isLeaf=False        if sum==0 and root==None:            return False        if root!=None and root.left==None and root.right==None:            isLeaf=True        now=0        return self.getDepthSum(root,sum,now,isLeaf)    def getDepthSum(self,root,sum,now,isLeaf):        if root==None: #如果节点为空            if sum==now and isLeaf==True:#如果当前节点(为空)的父节点为叶子节点且sum==now                return True #则返回真            else: #其余的情况返回假值                return False        else:            isLeaf=False #设置当前节点是否为叶子节点。isLeaf为假代表不是叶子节点            if root.left==None and root.right==None: #为叶子节点                isLeaf=True #isLeaf置为真            left=self.getDepthSum(root.left,sum,now+root.val,isLeaf)#递归左子树            right=self.getDepthSum(root.right,sum,now+root.val,isLeaf)#递归右子树            return left or right
原创粉丝点击