116. Populating Next Right Pointers in Each Node (Medium) - TengnanYao/daily_leetcode GitHub Wiki
"""
# 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
"""
class Solution:
def connect(self, root: 'Node') -> 'Node':
if root:
nodes = [root]
while nodes:
temp = []
n = len(nodes)
for i in range(n):
node = nodes[i]
if i < n - 1:
node.next = nodes[i + 1]
if node.left:
temp.append(node.left)
temp.append(node.right)
nodes = temp
return root
# save space
if root:
l = root
while l.left:
cur = l
while cur:
cur.left.next = cur.right
if cur.next:
cur.right.next = cur.next.left
cur = cur.next
l = l.left
return root