每日一题 117. 填充每个节点的下一个右侧节点指针 II (中等,树)

每日一题 117. 填充每个节点的下一个右侧节点指针 II (中等,树)_第1张图片

  1. BFS,一层层去搜索整棵树,然后建立next关系即可,下面给出的代码的空间复杂度是O(n)的
  2. O(1) 的做法,当构建完上一层的next关系后,我们就可以像链表一样从左到右访问上一层的节点,显然在访问的过程中,我们就可以构建下一层的next关系了
class Solution:
    def connect(self, root: 'Node') -> 'Node':
        if root is None:
            return root
        dq = deque()
        dq.append(root)
        while len(dq) > 0:
            n = len(dq)
            for i in range(n):
                t = dq.popleft()
                if i < n - 1:
                    t.next = dq[0]
                if t.left != None:
                    dq.append(t.left)
                if t.right != None:
                    dq.append(t.right)    
        return root

你可能感兴趣的:(用Python刷力扣,算法,leetcode,python)