Python-turtle递归画二叉树

一、二叉树

1.代码
#Authors:xiaobei
import turtle

#设置画布,初始化条件
turtle.setup(700,700)
turtle.penup()
turtle.goto(0,-250)
turtle.pendown()
turtle.left(90)
turtle.pensize(2)
turtle.fd(200)

#加快速度
turtle.delay(1)
def DrawTree(length,angle):
    if length > 15:     #递归结束条件
    
        #先画出左树
        turtle.left(angle)
        turtle.fd(length)
        DrawTree(length-15,angle)       #递归调用(假设DrawTree函数可用,调用自身完成左树)
        turtle.backward(length)         #返回节点处
        
        turtle.rt(2*angle)              #调整角度画右树
        
        turtle.fd(length)
        DrawTree(length-15,angle)       #递归调用(假设DrawTree函数可用,调用自身完成右树)
        turtle.backward(length)         #返回节点处
        
        turtle.left(angle)              #调整角度继续画左树
DrawTree(100,30)
turtle.mainloop()
2.运行结果

分叉树

一、改进的二叉树

1.代码
#Authors:xiaobei

from turtle import *
from random import *

screensize(500,500)
pensize(5)
pencolor("brown")
penup()
goto(0,-250)
seth(90)
pendown()
fd(250)
delay(1)

def tree(l):
    if l>0:
        #画出左树
        left(30)
        fd(l)
        tree(l-20)  #递归调用,先画出左子树
        backward(l) #返回节点
        #画出右树
        rt(60)      
        fd(l)
        tree(l-20)  #递归调用,画右子树的左子树
        backward(l) #返回节点
        left(30)    #调整角度,继续画左子树的右子树
def leaves():
    pencolor("green")
    for i in range(50):
        x=uniform(-250,250)
        y=uniform(100,280)
        penup()
        goto(x,y)
        pendown()
        dot(10)
    pencolor("yellow")
    for i in range(50):
        x=uniform(-250,250)
        y=uniform(-280,-200)
        penup()
        goto(x,y)
        pendown()
        dot(10)
tree(100)
leaves()
mainloop()
2.运行结果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值