Teaching Kids Programming: Videos on Data Structures and Algorithms
Given a binary tree root, return the maximum width of any level in the tree. The width of a level is the number of nodes that can fit between the leftmost node and the rightmost node.
Constraints
1 ≤ n ≤ 100,000 where n is the number of nodes in rootHints:
BFS
left_child = 2parent
right_child = 2parent+1
Compute the Max Level Width of Binary Tree using Breadth First Search Algorithm
In order to compute the width of a level, we need to know the coordinate of the left-most and right-most Node. The coordinate for a left node equals to the double of its parent, and a right node equal the parent*2+1.
Using Breadth First Search Algorithm, we can explore all nodes on a same level, and then sure we know the width for that level.
# class Tree:
# def __init__(self, val, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def binaryTreeMaxWidth(self, root):
if root is None:
return 0
q = deque([(root, 0)])
ans = 0
while q:
sz = len(q)
left = math.inf
right = -math.inf
for _ in range(sz):
cur, w = q.popleft()
if cur.left:
q.append((cur.left, w * 2))
if cur.right:
q.append((cur.right, w * 2 + 1))
left = min(left, w)
right = max(right, w)
ans = max(ans, right - left + 1)
return ans
The time complexity is O(N) and so is the space complexity – where N is the number of the nodes in the given binary tree.
Compute the Max Width of a Binary Tree:
- Teaching Kids Programming – Breadth First Search Algorithm to Compute the Max Width of a Binary Tree
- Breadth First Search Algorithm to Compute the Max Width of a Binary Tree
- Teaching Kids Programming – Depth First Search Algorithm to Compute the Max Width of a Binary Tree
–EOF (The Ultimate Computing & Technology Blog) —
Last Post: BASH Function to Install Docker
Next Post: GoLang: Compute the Math Pi Value via Monte Carlo Simulation
