662. Maximum Width of Binary Tree
Medium
Given the root
of a binary tree, return the maximum width of the given tree.
The maximum width of a tree is the maximum width among all levels.
The width of one level is defined as the length between the end-nodes (the leftmost and rightmost non-null nodes), where the null nodes between the end-nodes are also counted into the length calculation.
It is guaranteed that the answer will in the range of 32-bit signed integer.
Example 1:
Input: root = [1,3,2,5,3,null,9]
Output: 4
Explanation: The maximum width existing in the third level with the length 4 (5,3,null,9).
Example 2:
Input: root = [1,3,null,5,3]
Output: 2
Explanation: The maximum width existing in the third level with the length 2 (5,3).
Example 3:
Input: root = [1,3,2,5]
Output: 2
Explanation: The maximum width existing in the second level with the length 2 (3,2).
Constraints:
The number of nodes in the tree is in the range
[1, 3000]
.-100 <= Node.val <= 100
# 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 widthOfBinaryTree(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
q = []
q.append([root, 0, 0])
current_depth = 0
left = 0
result = 0
while q:
node, depth, position = q.pop(0)
if node:
q.append([node.left, depth+1, position*2])
q.append([node.right, depth+1, position*2+1])
if current_depth != depth:
current_depth = depth
left = position
# R-L+1 <-- Width of each level
result = max(result, (position-left+1))
return result
Last updated