A binary tree is univalued if every node in the tree has the same value.
Return true
if and only if the given tree is univalued.
Input: [1,1,1,1,1,null,1] Output: true
Input: [2,2,2,5,2] Output: false
- The number of nodes in the given tree will be in the range
[1, 100]
. - Each node's value will be an integer in the range
[0, 99]
.
# 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:
left, right = False, False
if not root.left:
left = True
elif root.val == root.left.val:
left = self.isUnivalTree(root.left)
if not root.right:
right = True
elif root.val == root.right.val:
right = self.isUnivalTree(root.right)
return left and right
# 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:
nodes = [root]
i = 0
while i < len(nodes):
if nodes[i].val != root.val:
return False
if nodes[i].left:
nodes.append(nodes[i].left)
if nodes[i].right:
nodes.append(nodes[i].right)
i += 1
return True