🖥 Перенос указателя вправо 

🖥 Перенос указателя вправо 

Сложность: Средняя

Условие задачи: Дано бинарное дерево, нужно перенести каждый указатель на следующий узел на соответствующий правый правый элемент на текущем уровне либо же передать указатель на NULL в случае отсутствия узла. 

Пример:

Ввод: root = [1,2,3,4,5,null,7]

Вывод: [1,#,2,3,#,4,5,7,#]


class Solution:
    def connect(self, root: 'Node') -> 'Node':
        if not root:
            return None
        q = deque()
        q.append(root)
        dummy=Node(-999) # to initialize with a not null prev
        while q:
            length=len(q) # find level length
            
            prev=dummy
            for _ in range(length): # iterate through all nodes in the same level
                popped=q.popleft()
                if popped.left:
                    q.append(popped.left)
                    prev.next=popped.left
                    prev=prev.next
                if popped.right:
                    q.append(popped.right)
                    prev.next=popped.right
                    prev=prev.next                
                 
        return root


Report Page