Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sealed trait BT[+A]
- case object Empty extends BT[Nothing]
- case class Node[+A](value:A, left:BT[A], right:BT[A]) extends BT[A]
- sealed trait Graph[A]
- case class GNode[A](value:A, list:List[Graph[A]]) extends Graph[A]
- def graphToBT[A](graph: Graph[A]) = {
- def aux(graph1: Graph[A], acc: List[Graph[A]]): Node[A] = {
- graph1 match {
- case GNode(a, Nil) => if(acc.length == 0){
- return Node(a, Empty, Empty)}
- else {
- return Node(a, aux(acc.head, acc.tail), Empty)
- }
- case GNode(a, h::t) =>
- t match {
- case Nil => Node(a, aux(h, acc), Empty)
- case h2::t2 => Node(a, aux(h, (acc ++ t2)), aux(h2, List()))
- }
- }
- }
- aux(graph, List())
- }
- def graph1 = GNode(1, List(GNode(2, List(GNode(3, List(GNode(4, List(GNode(5, List())))))))))
- def graph2 = GNode(1, List(GNode(2, List(GNode(3, List(GNode(4, List(GNode(5, List()), GNode(6, List()), GNode(7, List() )) )))))))
- def graph3 = GNode(1, List(GNode(2, List(GNode(3, List(GNode(4, List(GNode(5, List()), GNode(6, List()), GNode(7, List() ), GNode(8, List() ), GNode(9, List() ), GNode(10, List() )) )))))))
- graphToBT(graph1)
- graphToBT(graph2)
- graphToBT(graph3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement