jinhuang1102

117. Populating Next Right Pointers in Each Node II

Nov 18th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.18 KB | None | 0 0
  1. 这道题与 116 类似。同样是两种方法。
  2. 方法一: 依旧是我最熟悉的方法 level-order-traversal 但是好像同样是用level-order好像还有一个比我写的更加简洁的。
  3. ps. 这道题是第二遍做了,这一遍写的方法,没有第一边做这道题写的方法好。感觉原因出在总是考虑 internal node 的左或右子树为 Null 的情况。其实level-order 不用考虑这种情况。比如, [1,2,3,4,null,null,5] --level.--> [[1],[2,3],[4,5]] 中间的null是自动去除的。所以直接写成如下结果便好。
  4. class Solution:
  5.     # @param root, a tree link node
  6.     # @return nothing
  7.     def connect(self, root):
  8.         if not root:
  9.             return
  10.        
  11.         q = collections.deque()
  12.         q.append(root)
  13.         q.append(None)
  14.         while q:
  15.             if q[0] is None:
  16.                 q.popleft()
  17.                 if not q:
  18.                     break
  19.                 q.append(None)
  20.             else:
  21.                 q[0].next = q[1]
  22.                 if q[0].left:
  23.                     q.append(q[0].left)
  24.                 if q[0].right:
  25.                     q.append(q[0].right)
  26.                 q.popleft()
Add Comment
Please, Sign In to add comment