如果二叉樹每個節點都具有相同的值,那麼該二叉樹就是單值二叉樹。
只有給定的樹是單值二叉樹時,才返回 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表示樹的高度,因爲使用了遞歸遍歷。