116. 填充每个节点的下一个右侧节点指针
Code
"""
# Definition for a Node.
class Node:
def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):
self.val = val
self.left = left
self.right = right
self.next = next
"""
from collections import deque
class Solution :
def connect ( self, root: 'Optional[Node]' ) - > 'Optional[Node]' :
if not root: return root
q = deque( )
q. append( root)
while q:
length = len ( q)
for i in range ( 0 , length) :
node = q. popleft( )
if i < length - 1 : node. next = q[ 0 ]
if node. left: q. append( node. left)
if node. right: q. append( node. right)
return root
class Solution {
public :
Node* connect ( Node* root) {
if ( root == nullptr ) return root;
queue< Node* > Q;
Q. push ( root) ;
while ( ! Q. empty ( ) ) {
int length = Q. size ( ) ;
for ( int i = 0 ; i < length; i++ ) {
Node* node = Q. front ( ) ;
Q. pop ( ) ;
if ( i < length - 1 ) node-> next = Q. front ( ) ;
if ( node-> left != nullptr ) Q. push ( node-> left) ;
if ( node-> right != nullptr ) Q. push ( node-> right) ;
}
}
return root;
}
} ;