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)