Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def mkGraph2[A](orig:A, getNs:A=>Seq[A]):Graph[A] = {
- val seen = mutable.Map[A,Graph[A]]()
- def innerMk(o:A): Graph[A] = {
- val result = ArrayBuffer[Graph[A]]()
- for (n <- getNs(o)) {
- if (!seen.contains(n)) {
- val cur = innerMk(n)
- result += cur
- } else {
- val g = seen(n)
- result += g
- }
- }
- val g = Graph(o,result)
- seen(o) = g
- g
- }
- innerMk(orig)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement