"""
# Definition for a Node.
class Node(object):
def __init__(self, val=0, left=None, right=None, next=None):
self.val = val
self.left = left
self.right = right
self.next = next
"""
class Solution:
def connect(self, root):
# 首先将根节点存入
if root:
Tovisit = [root]
else:
return root
# 每一个除叶子之外的节点都存在左右孩子
# 每层节点出队时,将节点的左右孩子压入,便可以保证层级顺序
while Tovisit:
len_ = len(Tovisit)
for i in range(len_):
cur = Tovisit.pop(0)
# 说明当前值并不是这一层的最后一个
# 当前值的下一个仍然存在于队列中
if cur and i < len_ - 1:
cur.next = Tovisit[0]
if cur.left:
Tovisit.append(cur.left)
Tovisit.append(cur.right)
return root