python_二叉树_二叉树变形(50棵)

二叉树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)

本期就到这里啦,如果你有更好的方法,欢迎来评论区留言!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值