Python 二叉树

本次用Turtle模块实现Python二叉树

二叉树可以用递归来绘制

首先,导入模块

import turtle

设置每个树枝的倾斜角度

de=10

定义二叉树tree函数

def tree(x,y,degree,length,n):
    if n<=5: # 树叶
        t.pencolor("green")
    else: # 树枝
        t.pencolor("brown")
    t.pu()
    t.goto(x,y)
    t.setheading(degree)
    t.pd()
    t.forward(length)
    if n==1:
        return
    else:
        pos=t.pos()
        tree(pos[0],pos[1],degree+de,length,n-1) # 向左延申的树枝
        tree(pos[0],pos[1],degree-de,length,n-1) # 向右延申的树枝

设置turtle画笔参数

t.speed(0) # 速度加快
t.delay(0) # 由于设置为最高速度后速度依然很慢,画布设置为无延迟
t.tracer(400) # 依然很慢。。。加速400倍
tree(0,-300,90,30,10) # 画二叉树
t.done() # 窗口保持显示

最终代码

import turtle as t

de=10 # 每根树枝的倾斜角度

def tree(x,y,degree,length,n):
    if n<=5:
        t.pencolor("green")
    else:
        t.pencolor("brown")
    t.pu()
    t.goto(x,y)
    t.setheading(degree)
    t.pd()
    t.forward(length)
    if n==1:
        return
    else:
        pos=t.pos()
        tree(pos[0],pos[1],degree+de,length,n-1)
        tree(pos[0],pos[1],degree-de,length,n-1)

t.speed(0)
t.delay(0)
t.tracer(400)
tree(0,-300,90,30,10)
t.done()

让二叉树的倾斜角度、长度和数量变得随机

导入random

import random

将函数改写为

def tree(x,y,degree,length,n):
    if n<=5:
        t.pencolor("green")
    else:
        t.pencolor("brown")
    t.pu()
    t.goto(x,y)
    t.setheading(degree)
    t.pd()
    t.forward(length)
    if n==1:
        return
    else:
        pos=t.pos()
        tree(pos[0],pos[1],degree+de+random.randint(-5,5),length+random.randint(-5,5),n-1 if random.randint(1,100)<=90 else n)
        tree(pos[0],pos[1],degree-de+random.randint(-5,5),length+random.randint(-5,5),n-1 if random.randint(1,100)<=90 else n)

最后两行:倾斜角偏移-5~5度,长度偏移-5~5,树枝10%的可能增加1条

效果:


制作不易,喜欢的话记得关注哦!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值