title: Cycle detected while printing root to leaves path
body: <p>I used the solution to <a href="https://stackoverflow.com/questions/5671486/enumerating-all-paths-in-a-tree">this</a> problem to print all root to leaves path for a n-ary tree I have. 
  Unfortunately, I suspect,  there is a cycle in one of the branch of the tree due to which the program breaches the maximum recursion limit.</p>
  
  <pre><code>      A
      /   \
     B     C
     |     /\
     D    E  F
     |
     A (back to root)
  </code></pre>
  
  <blockquote>
    <p>D again goes back to A</p>
  </blockquote>
  
  <p>Please tell me how should I handle the cycle detection in the below program.</p>
  
  <pre><code>def paths(tree):
    #Helper function
    #receives a tree and 
    #returns all paths that have this node as root and all other paths
  
    if tree is the empty tree:
      return ([], [])
    else: #tree is a node
      root = tree.value
      rooted_paths = [[root]]
      unrooted_paths = []
      for subtree in tree.children:
          (useable, unueseable) = paths(subtree)
          for path in useable:
              unrooted_paths.append(path)
              rooted_paths.append([root]+path)
          for path in unuseable:
              unrooted_paths.append(path)
      return (rooted_paths, unrooted_paths)
  
  def the_function_you_use_in_the_end(tree):
     a,b = paths(tree)
     return a+b
  </code></pre>
  
  <p>p.s: I tried using visited nodes logic for detection, but that is not very helpful as a node can be legitimately visited multiple numbers of time:</p>
  
  <p>for Example: 
  A C
  A C E
  A C F</p>
  
  <p>C is visited multiple numbers of times</p>