Univalued binary tree
May 27, 2023
treeProblem URL: Univalued binary tree
We can use depth-first search to solve the problem. We will use a variable val to store the value of the root node. Then we will recursively check if the value of the current node is equal to val. If it is not, we will return False. Otherwise, we will recursively check if the left and right subtrees are univalued. Finally, we will return True.
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isUnivalTree(self, root: Optional[TreeNode]) -> bool:
if not root:
return True
if root.left:
if root.val != root.left.val:
return False
if root.right:
if root.val != root.right.val:
return False
return self.isUnivalTree(root.left) and self.isUnivalTree(root.right)
Time complexity: O(n) where n is the number of nodes in the tree
Space complexity: O(h) where h is the height of the tree