zoukankan      html  css  js  c++  java
  • 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.运行结果

    在这里插入图片描述

  • 相关阅读:
    requireJS搭建
    html启动本地.exe文件
    自定义input[type="checkbox"]的样式
    使用rem单位时css sprites的坑
    visibility API
    css动画
    去除ios端输入框的弹出
    *java类的生命周期
    处理高并发,防止库存超卖
    java注解的使用
  • 原文地址:https://www.cnblogs.com/slz99/p/12527744.html
Copyright © 2011-2022 走看看