algorithm - Stumped with functional breadth-first tree traversal in Clojure? -


Say that I have a tree as per the recommendation, although it is a vector in my case, which is expected that it does not make any difference. (They are vectors in the programming closure book):
  (def tree [1 [[2 [4] [5]] [3 [6]]]]]   

Whatever should be like this:

  1/2 2 3 / \ | 4 5 6   

Now, I do not have any Traditional means like quadrangle without queuing - I want to stir, and instead I want to use the stack to give information specifically. I know this is not the easiest way, In the form of Apart from this, I am not planning to back an archive (I will consider it later as practice), rather than printing nodes as soon as I travel with them.

My current Solution with the closure, to be good):

  (def-breadth-recur [queue] (if (blank queue) (println "Done!") (Let [collection (before (filter ? Queue ()) () (Print the nodes at the present level, they will not be wrapped '; [] In the vector, Car coll; False (knocker [node queue] will return (if not (coll (node)) (print node)) (Reconfigure (Conge (first collection))))))))   

The last line is not intended and I am stumped about how to add it. I know what I want: I have to peel each layer of vectors and then have to insert it to recycle the results.

What I see is mostly:

  InvalidAgreement exception: How to make ISeq not know: java.lang.Long   < P> Actually  conge  does not like to add a vector for long, and if I swap the cones for  concat , then I fail I am adding one of two items to the vector that both conj and concat fail to face:  
  [2 [4] [5] [3 [6]]   

m I feel that I am

Edit1: P> The tree should be in fact (thanks Joost!):

  (def tree [1 [2 [4] [5]] [3 [6]]]   

Although we still have not found a width - the first solution.

< P> Since apparently still no fourth-first solution has been posted, there is a simple algorithm here, first implemented eagerly, and then changed lazy:
  (deff bfs-eager [tree] (loop [art], q (conj closor. Lung.Estitional Queue / AMPT Tree (If (Seak Queue) (Let's [[Nodes and Children] (Thumbnail Rows)] (Repetition (Conn. Rate Node)) ((Pop Queue))))))) () BF -Alasi [tree] (FN phase [queue] (lazy-seq (when (Seek queue) (Let's [[nodes and children] queue)] (Children in the node (step (pop queue)))))) )) (Conj clojure.lang.PersistentQueue / EMPTY tree))    

Comments