LeetCode/주제별 보충

BFS: 116. Populating Next Right Pointers in Each Node

hyunkookim 2025. 1. 16. 13:34

 

https://youtu.be/U4hFQCa1Cq0?si=qOfcXWT90Uo5RjvE

 

 

"""
# 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: 'Optional[Node]') -> 'Optional[Node]':
        cur, nxt = root, root.left if root else None

        while cur and nxt: # cur is not null, and nxt is not null
            cur.left.next = cur.right
            if cur.next: # cur.next is not null
                cur.right.next = cur.next.left

            cur = cur.next # 오른쪽으로 넘어갔는데, 
            if not cur: # null 이라는 말은 오른쪽 끝이라는 것이니, 다음 레벨로 하나씩 옮기기.
                cur = nxt  
                nxt = cur.left

        return root