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

    在这里插入图片描述

  • 相关阅读:
    算法与数据结构(二):队列
    算法与数据结构(二):链表
    算法与数据结构(一):时间复杂度与空间复杂度
    2018总结与2019规划
    VC++ IPv6的支持
    从项目中学习HTML+CSS
    xampp 中 mysql的相关配置
    yum卸载遇到的问题--待解决
    RHEL 6.5----heartbeat
    RHEL 6.5-----MFS
  • 原文地址:https://www.cnblogs.com/slz99/p/12527744.html
Copyright © 2020-2023  润新知