965. Univalued Binary Tree | Easy
Another one. It was an easy problem. Another challenge could be to use the least amount of code?
Problem:
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.
Example 1:
Input: [1,1,1,1,1,null,1]
Output: true
Example 2:
Input: [2,2,2,5,2]
Output: false
Note:
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].
Accepted 7,881 Submissions 10,935
Both used same code, but resulted in slightly different speed: Runtime: 56 ms, faster than 85.93% of Python3 online submissions for Univalued Binary Tree. Runtime: 52 ms, faster than 94.34% of Python3 online submissions for Univalued Binary Tree.
# 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):
"""
:type root: TreeNode
:rtype: bool
"""
if not (root.left or root.right):
return True
elif root.left and root.right:
return \
root.left.val == root.val and \
root.right.val == root.val and \
self.isUnivalTree(root.left) and \
self.isUnivalTree(root.right)
elif root.left:
return \
root.left.val == root.val and \
self.isUnivalTree(root.left)
elif root.right:
return \
root.right.val == root.val and \
self.isUnivalTree(root.right)
return False