shambalaxx
8/31/2016 - 12:15 PM

print structured btree

print structured btree

import scala.math

case class BTree[T](value: T, lft: Option[BTree[T]] = None, rt: Option[BTree[T]] = None) {

  def toMultiLIneString: String = {
    def someToStr(option: Option[BTree[T]]): String = option match {
      case None => "None"
      case Some(tree) => tree.toMultiLIneString
    }
    val str: String = value.toString
    str + ":\n" + " " * (str.size + 1) +
      someToStr(lft).lines.mkString("\n" + " " * (str.size + 1)) + " " * (str.size + 1) + "\n" + " " * (str.size + 1) +
      someToStr(rt).lines.mkString("\n" + " " * (str.size + 1))

  }
}

val tree: BTree[String] = BTree("test",
  Some(BTree("aa")),
  Some(BTree("bbb",
    Some(BTree("11111111",
      Some(BTree("s",
        Some(BTree("b")),
        Some(BTree("t")))))),
    Some(BTree("a")))))

println(tree.toMultiLIneString)