leetcode —— 965. 單值二叉樹

如果二叉樹每個節點都具有相同的值,那麼該二叉樹就是單值二叉樹。

只有給定的樹是單值二叉樹時,才返回 true;否則返回 false。

輸入:[1,1,1,1,1,null,1]
輸出:true

——————————————
解題思路:對於當前節點,比較當前節點和左子節點的值是否相同,比較當前節點和右子節點的值是否相同。如果存在不同值,則直接返回False。如果值都相同,則使用遞歸函數比較其左子節點和右子節點。

其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 isUnivalTree(self, root: TreeNode) -> bool:
        if not root:
            return True
        if root.left and root.left.val!=root.val:  # 比較當前節點和左子節點
            return False
        if root.right and root.right.val!=root.val:  # 比較當前節點和右子節點
            return False
        return self.isUnivalTree(root.left) and self.isUnivalTree(root.right)  # 遞歸比較左子樹和右子樹

算法的時間複雜度爲O(n),因爲要比較每一個結點。空間複雜度爲O(H),H表示樹的高度,因爲使用了遞歸遍歷。

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