116. 填充每个节点的下一个右侧节点指针



输入:

输出:

解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。


BFS模板的应用。

总结的DFS、BFS模板参考:https://www.cnblogs.com/panweiwei/p/13065661.html

class Solution(object):
    # 层序遍历
    def connect(self, root):
        """
        :type root: Node
        :rtype: Node
        """
        if not root:
            return root
        queue = [root]
        # while 循环迭代的是树的层级。
        while queue:
            l = len(queue)
            # 内部的 for 循环迭代的是同一层的所有节点
            for i in range(l):
                node = queue.pop(0)
                # 由于可以访问同一层级的所有节点,因此能够建立 next 指针连接。
                if i < l - 1:
                    node.next = queue[0]
                """
                for 循环弹出一个节点时,同时把它的左孩子节点和右孩子节点依次加入队列。
                因此队列中每个层级的元素也是顺序存储的。可以通过已有的顺序建立 next 指针。
                """
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
        return root
posted @ 2020-09-13 15:12  人间烟火地三鲜  阅读(108)  评论(0)    收藏  举报