题目意思:给完全二叉树的每个节点添加一个新的指针,能够指示当前节点在该层当中的下一个节点,题目不难,只需要层次遍历即可。设置一个队列,用于存储当前层的结点,然后依次出队即可,最右边的结点的next指针为空。以前在pat上写过类似的题,不过是用C++写的,python用的不熟,下面代码来自官方教程
from collections import deque
class Solution:
def connect(self, root: 'Node') -> 'Node': # root是指向Node型的指针
if not root:
return root
# 根节点进队
q = deque([root])
while q:
size = len(q) #每次的结点数目
for i in range(size):
node = q.popleft() #出队
if(i < size - 1): #每一层最右边那个结点不需要指定next
node.next = q[0]
if node.left: #下一层结点入队
q.append(node.left)
if node.right:
q.append(node.right)
return root