1008. Binary Tree Cameras
My accepted Python solution to LeetCode problem 1008, Binary Tree Cameras, running in 0ms.
- Difficulty: Hard
- Python
- Runtime 0ms
- Memory 17.3MB
- Updated
Read the problem on LeetCode View on GitHub
The problem statement is LeetCode’s and stays on their site. What follows is my accepted solution.
Python
Accepted on LeetCode — runtime 0ms, memory 17.3MB, accepted 2026-01-01.
# 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 minCameraCover(self, root: Optional[TreeNode]) -> int:
self.cameras = 0
def dfs(node):
# Return states:
# 0: not covered
# 1: covered but no camera
# 2: has camera
if not node:
return 1 # null nodes are covered
left = dfs(node.left)
right = dfs(node.right)
# If any child is not covered, we must put camera here
if left == 0 or right == 0:
self.cameras += 1
return 2
# If any child has camera, this node is covered
if left == 2 or right == 2:
return 1
# Both children are covered but no camera nearby
return 0
if dfs(root) == 0:
self.cameras += 1
return self.cameras