画一棵深度优先树 | Python

最近在中国大学MOOC网站,跟着北理工嵩天老师团队,学习《Python语言程序设计》。其中,第5周的思考题,是要实现一个深度优先的树。我的答案如下:

先看实现效果:

画一棵深度优先树 | Python_第1张图片
我的深度优先树.gif

代码如下:


# 深度优先算法
# [email protected] on Oct. 31th, 2017.



from turtle import Turtle

# l是枝条的长度
# a是同层枝条之间的角度的1/2
# f是下层枝条长度与上层枝条的长度的比率,是一个收敛因子。越大收敛越慢。

def tree(head, l, a, f):
    if l > 5:
        head.forward(l)
        q = head.clone()
        head.left(a)
        q.right(a)
        tree(head, l*f, a, f)
        tree(q, l*f, a, f)
        
        

# 主程序是从老师那里抄来的哦     
def main():
    p = Turtle()
    p.color("Pink")
    p.pensize(5)        # 偶是粉红控,^_^
    p.hideturtle()
    
    p.speed(9)          # 速度, 10最快,0最慢。

    p.left(90)
    
    p.penup()
    p.goto(0,-200)
    p.pendown()
    
    t = tree(p, 110, 65, 0.618)
    
main()
画一棵深度优先树 | Python_第2张图片
树.PNG

你可能感兴趣的:(画一棵深度优先树 | Python)