学完了如何将树的形式打印出来:如下面的例子:
30
20 80
40 50 10 60
70 90
其实看作一个‘十字’的中心点,然后每一个都是居中打印即可了。
还可以看作栅格投影类似的 ,算出每个间隔是几个空格即可了。
实现(只实现第一种)
import math
import math
def print_tree(array,unit_width = 2):
length = len(array)
depth = math.ceil(math.log2(length + 1))
index = 0
width = 2** depth-1 #行宽,最深是15
for i in range(depth):#控制一行的
for j in range(2**i):#一行该取几下,取下面的array[index]
print('{:^{}}'.format(array[index],width * unit_width),end =' ' * unit_width)
index += 1
if index >=length:
break
width = width//2
print()
print_tree([30,20,80,40,50,10,60,70,90])