高一计算思维:用Python列表和turtle绘制完全二叉树
import turtle as t
import math as m
total= 0
dis= [ ]
ds= 100
for i in range ( 5 ) :
temp= int ( m. pow ( 2 , i) )
total+= temp
for i in range ( temp) :
dis. append( ds)
ds= ds/ 2
Number= [ ]
v= [ ]
for j in range ( total) :
Number. append( j)
v. append( 0 )
i= 0
v[ 0 ] = 1
t. setheading( 90 )
t. penup( )
t. goto( 0 , - 100 )
t. speed( 0 )
while 1 :
if 2 * i+ 1 < len ( Number) and v[ 2 * i+ 1 ] == 0 :
t. pendown( )
t. setheading( 90 )
t. fd( dis[ i] )
t. setheading( 110 )
t. fd( dis[ i] )
v[ 2 * i+ 1 ] = 1
i= 2 * i+ 1
elif 2 * i+ 2 < len ( Number) and v[ 2 * i+ 2 ] == 0 :
t. pendown( )
t. setheading( 90 )
t. fd( dis[ i] )
t. setheading( 70 )
t. fd( dis[ i] )
v[ 2 * i+ 2 ] = 1
i= 2 * i+ 2
else :
if i% 2 == 0 :
i= int ( ( i- 1 ) / 2 )
t. penup( )
t. setheading( 70 )
t. back( dis[ i] )
t. setheading( 90 )
t. back( dis[ i] )
else :
i= int ( i/ 2 )
t. penup( )
t. setheading( 110 )
t. back( dis[ i] )
t. setheading( 90 )
t. back( dis[ i] )
if v. count( 0 ) == 0 :
print ( "End" )
break