二叉树1.0
今天悦儿姐带大家来画一个二叉树,初始树枝长度为60,后续依次减6。画四层,每根树枝的转角为30°。如图
怎么样?嘿嘿,要是觉得难的话,那就看看我的代码吧!其中的调用自身会调用很多次,很多同学会很蒙😵。其实,只要把你画完的结果当作一次调用自身的返回值,这段代码就不难懂了。
好,看完这一段,就让我们进入二叉树2.0,来看看五十丛二叉树是什么样子吧!
修改二叉树1.0版本,让二叉树可以往左边、右边倒。(有些多余的树枝可以删掉)如下
我们要在屏幕(400,300)中随机位置出现50棵二叉树,并要让其第一根树枝的长度变成由30到60的随机数,转角20°,层数为4到6的随机数。位于屏幕左侧的往左倾斜,在右侧的往右倾斜。如下:
好,乍一看有些难,其实很简单。我们不妨设置两个函数,一个往左,一个往右,调用时用for循环,在for中随机各种数据,根据坐标来判断它在左还是在右,再根据判断来调用函数。
程序如下,相信你们有了1.0的基础,能很快读懂2.0的代码
import turtle as t
import random as r
t.left(90)
i=0
t.tracer(False)
def sp(x,y):
t.penup()
t.goto(x,y)
t.pendown()
def r_dt(l,a,n):
global i
if i<n:
t.rt(a)
t.forward(l)
i+=1
r_dt(l-6,a,n)
t.backward(l)
i-=1
t.left(10)
t.forward(l)
i+=1
r_dt(l-6,a,n)
t.backward(l)
i-=1
t.left(a-10)
def l_dt(l,a,n):
global i
if i<n:
t.left(a)
t.forward(l)
i+=1
l_dt(l-6,a,n)
t.backward(l)
i-=1
t.rt(10)
t.forward(l)
i+=1
l_dt(l-6,a,n)
t.backward(l)
i-=1
t.rt(a-10)
for p in range(50):
x=r.randint(-200,200)
y=r.randint(-150,150)
l=r.randint(30,60)
n=r.randint(4,6)
sp(x,y)
if x>0:
r_dt(l,20,n)
else:
l_dt(l,20,n)
本期就到这里啦,如果你有更好的方法,欢迎来评论区留言!!!