from math import log

def affiche(arbre):
    hauteur = int(log(len(arbre) + 1, 2))

    for i in range(hauteur):
        ligne = ''
        # ecartement entre les noeuds sur cette ligne
        ecart_ligne = (2**(hauteur-i+1) - 3) * ' '
        # écart au début
        ecart_debut= (2**(hauteur-i) - 2) * ' '
        for j in range(2**i - 1, min(2**(i+1) - 1, len(arbre))):
            ligne += "{0:^3}".format(str(arbre[j]))
            if j < min(2**(i+1) - 1, len(arbre)) - 1:
                ligne += ecart_ligne
        print('\n'+ecart_debut+ligne)

arbre = [7,3,8,9,2,1,5,10,13,15,17,12,14,None,None]
affiche(arbre)