# 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 = rightclassSolution:defwidthOfBinaryTree(self, root: Optional[TreeNode])->int:
res =0
queue = collections.deque()
root.val =1
queue.append(root)while queue:
tmpSize =len(queue)
start, end =-1,-1for i inrange(tmpSize):
curNode = queue.popleft()
val = curNode.val
if i ==0:
start = curNode.val
if i == tmpSize -1:
end = curNode.val
if curNode.left:
curNode.left.val =2* val
queue.append(curNode.left)if curNode.right:
curNode.right.val =2* val +1
queue.append(curNode.right)
res =max(res, end - start +1)return res