[
dfs
bfs
tree
]
BinarySearch 0011 Univalue Tree Count
Problem statement
https://binarysearch.com/problems/Univalue-Tree-Count/
Solution
Use dfs with state (if subtree is good, value of this subtree). Second value can be anything if subtree is not good.
Complexity
It is O(n) for time and O(h) for space.
Code
class Solution:
def solve(self, root):
self.ans = 0
def dfs(node):
x, vals = [True], [node.val]
for child in filter(None, [node.left, node.right]):
ans1, val1 = dfs(child)
vals += [val1]
x += [ans1]
if False not in x and len(set(vals)) == 1:
self.ans += 1
return [True, vals[0]]
else:
return [False, 0]
dfs(root)
return self.ans