Skip to content

Latest commit

 

History

History
71 lines (62 loc) · 1.85 KB

File metadata and controls

71 lines (62 loc) · 1.85 KB

965. Univalued Binary Tree

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:

  1. The number of nodes in the given tree will be in the range [1, 100].
  2. Each node's value will be an integer in the range [0, 99].

Solutions (Python)

1. DFS

# 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

2. BFS

# 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