刷題系類 - Python判斷二叉樹是否存在一條路徑滿足和值要求

張國平發表於2020-01-20

繼續刷題,判斷二叉樹是否存在一條路徑滿足和值要求。

這個名稱描述很複雜,其實很簡單。如下圖,判斷是否有一個從根節點到葉子節點路徑,和值為8, 就是1 -> 2-> 5。

這個用遞迴來做很簡單,就是判斷輸入節點的值和輸入值是否一樣,如果是而且當前節點為葉子節點,返回True,如果當前節點為空,返回False; 如果都不是,則遞迴到輸入節點子節點,並且輸入值為sum減去當前節點。

這裡使用or 來判單,只有有一組路徑複合就可以返回True

# 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
        else:
            if root.left == None and root.right == None and root.val == sum:
                return True
            else:
                return self.hasPathSum(root.left,sum-root.val) or self.hasPathSum(root.right,sum-root.val)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2674079/,如需轉載,請註明出處,否則將追究法律責任。

相關文章