# 填充每个节点的下一个右侧节点指针 II

给定一个二叉树

struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL

初始状态下,所有 next 指针都被设置为 NULL

 

进阶:

 

示例:

输入:root = [1,2,3,4,5,null,7]
输出:[1,#,2,3,#,4,5,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),'#' 表示每层的末尾。

 

提示:

 

## template ```python class Node(object): def __init__(self, val, left, right, next): self.val = val self.left = left self.right = right self.next = next class Solution: def connect(self, root: "Node") -> "Node": if root == None: return None firstNode = root while firstNode: while firstNode and firstNode.left == None and firstNode.right == None: firstNode = firstNode.next if firstNode == None: break cur = firstNode pre = None while cur: if cur.left: if pre: pre.next = cur.left pre = cur.left if cur.right: if pre: pre.next = cur.right pre = cur.right cur = cur.next firstNode = firstNode.left if firstNode.left else firstNode.right return root ``` ## 答案 ```python ``` ## 选项 ### A ```python ``` ### B ```python ``` ### C ```python ```