Populating Next Right Pointers in Each Node (Leetcode 116)

Problem Link: https://leetcode.com/problems/populating-next-right-pointers-in-each-node/

"""
# 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]':
        if(root is None):
            return None
        q=[root]
        while(len(q)>0):
            temp=[]
            for i in range(len(q)):
                node=q.pop()
                if(node.left is not None):
                    q.insert(0,node.left)
                if(node.right is not None):
                    q.insert(0,node.right)
                temp.append(node)
            for i in range(len(temp)):
                if(i==len(temp)-1):
                    temp[i].next=None
                else:
                    temp[i].next=temp[i+1]
        return root      

Last updated