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)