Advertisement
serega1112

222

Mar 27th, 2021
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.79 KB | None | 0 0
  1. class Solution:
  2.     def countNodes(self, root: TreeNode) -> int:
  3.         if not root:
  4.             return 0
  5.  
  6.         levels = -1
  7.         cur = root
  8.         while cur:
  9.             levels += 1
  10.             cur = cur.left
  11.            
  12.         def exists(num, levels):
  13.             path = f'{num:0{levels}b}'
  14.             cur = root
  15.             for step in path:
  16.                 if step == '0':
  17.                     cur = cur.left
  18.                 else:
  19.                     cur = cur.right
  20.             return cur is not None
  21.        
  22.         l = 0
  23.         r = 2 ** levels
  24.        
  25.         while r - l > 1:
  26.             mid = l + (r - l) // 2
  27.             if exists(mid, levels):
  28.                 l = mid
  29.             else:
  30.                 r = mid
  31.                
  32.         return 2 ** (levels) + l
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement