【每日一题】116. Populating Next Right Pointers in Each Node

在这里插入图片描述

题目意思:给完全二叉树的每个节点添加一个新的指针,能够指示当前节点在该层当中的下一个节点,题目不难,只需要层次遍历即可。设置一个队列,用于存储当前层的结点,然后依次出队即可,最右边的结点的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

猜你喜欢

转载自blog.csdn.net/SJTUKK/article/details/109091893