Advertisement
kosievdmerwe

Untitled

Feb 26th, 2022
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.95 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.         left_shift = [0]
  10.         max_right = 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.             if level != 0:
  17.                 if len(left_shift) == level:
  18.                     left_shift.append(pos)
  19.                 pos -= left_shift[level]
  20.                
  21.        
  22.             max_right[level] = max(max_right[level], pos)
  23.            
  24.             dfs(node.left, pos * 2, level + 1)
  25.             dfs(node.right, pos * 2 + 1, level + 1)
  26.            
  27.         dfs(root)
  28.        
  29.         return max(max_right.values()) + 1
  30.        
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement