text: #!/usr/bin/env python3
  """      turtle-example-suite:
  
               tdemo_tree.py
  
  Displays a 'breadth-first-tree' - in contrast
  to the classical Logo tree drawing programs,
  which use a depth-first-algorithm.
  
  Uses:
  (1) a tree-generator, where the drawing is
  quasi the side-effect, whereas the generator
  always yields None.
  (2) Turtle-cloning: At each branching point
  the current pen is cloned. So in the end
  there are 1024 turtles.
  """
  from turtle import Turtle, mainloop
  from time import perf_counter as clock
  
  def tree(plist, l, a, f):
      """ plist is list of pens
      l is length of branch
      a is half of the angle between 2 branches
      f is factor by which branch is shortened
      from level to level."""
      if l > 3:
          lst = []
          for p in plist:
              p.forward(l)
              q = p.clone()
              p.left(a)
              q.right(a)
              lst.append(p)
              lst.append(q)
          for x in tree(lst, l*f, a, f):
              yield None
  
  def maketree():
      p = Turtle()
      p.setundobuffer(None)
      p.hideturtle()
      p.speed(0)
      p.getscreen().tracer(30,0)
      p.left(90)
      p.penup()
      p.forward(-210)
      p.pendown()
      t = tree([p], 200, 65, 0.6375)
      for x in t:
          pass
      print(len(p.getscreen().turtles()))
  
  def main():
      a=clock()
      maketree()
      b=clock()
      return "done: %.2f sec." % (b-a)
  
  if __name__ == "__main__":
      msg = main()
      print(msg)
      mainloop()
  