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.运行结果

在这里插入图片描述

原文地址:https://www.cnblogs.com/slz99/p/12527744.html