题目
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
struct Node {int val;Node *left;Node *right;Node *next;}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
进阶:
- 你只能使用常量级额外空间。
- 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。
思路
按照层序遍历的思路来做,使用队列,维护结点入队和出队。
"""# Definition for a Node.class Node:def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):self.val = valself.left = leftself.right = rightself.next = next"""class Solution:def connect(self, root: 'Node') -> 'Node':if root is None: returnans = []queue = [root]while len(queue) > 0:length = len(queue)for i in range(length):node = queue.pop(0)if i != length - 1:node.next = queue[0]if node.left: queue.append(node.left)if node.right: queue.append(node.right)return root
