tree = [[[5, 1, 2], [8, -8, -9]], [[9, 4, 5], [-3, 4, 3]]]
root = 0
pruned = 0
def children(branch, depth, aplha, beta):
    global tree
    global root
    global pruned
    i = 0
    for child in branch:
        if type(child) is list:
           (nalpha, nbeta) = children(child, depth + 1, alpha, beta)
           if depth % 2 == 1:
              beta = nalpha if nalpha < beta else beta
           else:
              alpha = nbeta if nbeta > alpha else aplha
           branch[i] = alpha if depth % 2 == 0 else beta
           i += 1
        else:
          if depth % 2 == 0 and alpha < child:
              alpha = child
          if depth % 2 == 1 and beta > child:
             beta = child
          if alpha >= beta:
             pruned += 1
             break
    if depth == root:
       tree = alpha if root == 0 else beta
    return (alpha, beta)
    def alphabeta(in_tree=tree, start=root, upper=-15, lower=15):
      global tree
      global pruned
      global root
      (alpha, beta) = children(tree, start, upper, lower)
    if __name__== "__main__":
      print ("(alpha, beta): ", alpha, beta)
      print ("Result: ", tree)
      print ("Times pruned: ", pruned)
    return (alpha, beta, tree, pruned)
if __name__== "__main__":
      alphabeta(None)