Advertisement
kosievdmerwe

Untitled

Feb 26th, 2022
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.92 KB | None | 0 0
  1. # Definition for a binary tree node.
  2. # class TreeNode:
  3. #     def __init__(self, val=0, left=None, right=None):
  4. #         self.val = val
  5. #         self.left = left
  6. #         self.right = right
  7. class Solution:
  8.     def widthOfBinaryTree(self, root: Optional[TreeNode]) -> int:
  9.         min_level = defaultdict(lambda: float('inf'))
  10.         max_level = defaultdict(lambda: -float('inf'))
  11.        
  12.         def dfs(node: Optional[TreeNode], pos: int = 0, level: int = 0):
  13.             if node is None:
  14.                 return
  15.            
  16.             min_level[level] = min(min_level[level], pos)
  17.             max_level[level] = max(max_level[level], pos)
  18.             dfs(node.left, pos * 2, level + 1)
  19.             dfs(node.right, pos * 2 + 1, level + 1)
  20.         dfs(root)
  21.        
  22.         ans = 0
  23.         for level in min_level.keys():
  24.             ans = max(ans, max_level[level] - min_level[level] + 1)
  25.         return ans
  26.        
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement