if pre.left:
                queue.append(pre.left)
            if pre.right:
                queue.append(pre.right)
            for i in xrange(1, size):
                cur = queue.pop(0)
                if cur.left:
                    queue.append(cur.left)
                if cur.right:
                    queue.append(cur.right)
                pre.next = cur
                pre = cur


if __name__ == '__main__':
    n1 = TreeLinkNode(1)
    n2 = TreeLinkNode(2)
    n3 = TreeLinkNode(3)
    n4 = TreeLinkNode(4)
    n5 = TreeLinkNode(5)
    n6 = TreeLinkNode(6)
    n7 = TreeLinkNode(7)
    n8 = TreeLinkNode(8)
    n1.left = n2
    n1.right = n3
    n2.left = n4
    n2.right = n5
    n3.left = n6
    n3.right = n7
    n4.left = n8
Exemplo n.º 2
0
        if root:
            root_next = root.next
            while root_next and not root_next.left and not root_next.right:
                root_next = root_next.next
            if root.left:
                root.left.next = root.right or (
                    (root_next.left or root_next.right) if root_next else None)
            if root.right:
                root.right.next = (root_next.left
                                   or root_next.right) if root_next else None
            self.connectDFS(root.right)
            self.connectDFS(root.left)


if __name__ == '__main__':
    n1 = TreeLinkNode(2)
    n2 = TreeLinkNode(1)
    n3 = TreeLinkNode(3)
    n4 = TreeLinkNode(0)
    n5 = TreeLinkNode(7)
    n6 = TreeLinkNode(9)
    n7 = TreeLinkNode(1)
    n8 = TreeLinkNode(2)
    n9 = TreeLinkNode(1)
    n10 = TreeLinkNode(0)
    n11 = TreeLinkNode(8)
    n12 = TreeLinkNode(8)
    n13 = TreeLinkNode(7)

    n1.left = n2
    n1.right = n3
    def connect(self, root):
        if root:
            root_next = root.next
            while root_next and not root_next.left and not root_next.right:
                root_next = root_next.next
            if root.left:
                root.left.next = root.right or ((root_next.left or root_next.right) if root_next else None)
            if root.right:
                root.right.next = (root_next.left or root_next.right) if root_next else None
            self.connect(root.right)
            self.connect(root.left)


if __name__ == '__main__':
    n1 = TreeLinkNode(2)
    n2 = TreeLinkNode(1)
    n3 = TreeLinkNode(3)
    n4 = TreeLinkNode(0)
    n5 = TreeLinkNode(7)
    n6 = TreeLinkNode(9)
    n7 = TreeLinkNode(1)
    n8 = TreeLinkNode(2)
    n9 = TreeLinkNode(1)
    n10 = TreeLinkNode(0)
    n11 = TreeLinkNode(8)
    n12 = TreeLinkNode(8)
    n13 = TreeLinkNode(7)

    n1.left = n2
    n1.right = n3