如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true
;否则返回 false
。
示例 1:
输入:[1,1,1,1,1,null,1]
输出:true
示例 2:
输入:[2,2,2,5,2]
输出:false
思路:
水题,递归地扫每个node,如果有和root.val不一样的值就返回False,否则返回True。
时间复杂度:O(N)
空间复杂度:O(N)
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def isUnivalTree(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
self.value = root.val
self.result = True
self.generate(root)
return self.result
def generate(self, root):
if root.val != self.value:
self.result = False
return
if not root:
return
if root.left:
self.generate(root.left)
if root.right:
self.generate(root.right)
以下写于2020年01月09日13:05:00
class Solution(object):
def isUnivalTree(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if not root:
return True
left = not root.left or (self.isUnivalTree(root.left) and root.val == root.left.val)
right = not root.right or (self.isUnivalTree(root.right) and root.val == root.right.val)
return left and right