leetcode-112 路徑總和

給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。

說明: 葉子節點是指沒有子節點的節點。


思路:只想到了使用遞歸的方法,遞歸查找左右子樹是否存在和 sum - root.val 的一條路徑,結束條件是節點爲葉節點且其值爲sum,還需要注意樹爲空的情況(這裏應該用到了分治法的思想),下面是python實現:

# 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, sum):
        """
        :type root: TreeNode
        :type sum: int
        :rtype: bool
        """
        
        #處理空樹的情況
        if root == None:
            return False
        
        #處理葉節點的情況
        if root.left == None and root.right == None:
            if sum == root.val:
                return True
            else:
                return False
            
        #遞歸遍歷左右子樹    
        if root.left != None or root.right != None:
            return self.hasPathSum(root.left, sum-root.val) or self.hasPathSum(root.right, sum-root.val)   

python剛開始學,還請大佬們多多指教!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章