Advertisement
Guest User

Untitled

a guest
Dec 13th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.46 KB | None | 0 0
  1.   def mkGraph2[A](orig:A, getNs:A=>Seq[A]):Graph[A] = {
  2.     val seen = mutable.Map[A,Graph[A]]()
  3.     def innerMk(o:A): Graph[A] = {
  4.       val result = ArrayBuffer[Graph[A]]()
  5.       for (n <- getNs(o)) {
  6.         if (!seen.contains(n)) {
  7.           val cur = innerMk(n)
  8.           result += cur
  9.         } else {
  10.           val g = seen(n)
  11.           result += g
  12.         }
  13.       }
  14.       val g = Graph(o,result)
  15.       seen(o) = g
  16.       g
  17.     }
  18.     innerMk(orig)
  19.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement