- BFS,一层层去搜索整棵树,然后建立next关系即可,下面给出的代码的空间复杂度是O(n)的
- O(1) 的做法,当构建完上一层的next关系后,我们就可以像链表一样从左到右访问上一层的节点,显然在访问的过程中,我们就可以构建下一层的next关系了
class Solution:
def connect(self, root: 'Node') -> 'Node':
if root is None:
return root
dq = deque()
dq.append(root)
while len(dq) > 0:
n = len(dq)
for i in range(n):
t = dq.popleft()
if i < n - 1:
t.next = dq[0]
if t.left != None:
dq.append(t.left)
if t.right != None:
dq.append(t.right)
return root