def deserialize(stack): root = None val = stack.pop() if not val == '#': root = Node(int(val)) root.right = deserialize(stack) root.left = deserialize(stack) return root
def preorder_deserialize(list): if len(list) <= 0: return None root = None val = list.pop(0) if val != '#': root = Node(int(val)) root.left = preorder_deserialize(list) root.right = preorder_deserialize(list) return root
return max_width, max_width_level if __name__ == '__main__': """ 0 1 2 3 4 5 6 pre-order: 0 1 3 4 2 5 6 in-order: 3 1 4 0 5 2 6 post-order:3 4 1 5 6 2 0 """ nodes = [Node(i) for i in range(7)] head = nodes[0] nodes[0].left = nodes[1] nodes[0].right = nodes[2] nodes[1].left = nodes[3] nodes[1].right = nodes[4] nodes[2].left = nodes[5] nodes[2].right = nodes[6] results = [] max_width, level = get_max_width(nodes[0]) print(f'Maximum width is {max_width}, at level {level}')