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
Beispiel #2
0
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
Beispiel #3
0
    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}')