case class TreeNode[T](data: T, children: Seq[TreeNode[T]] = Nil)
object TreeNode {
var tmp: Seq[String] = Nil
def pr: PartialFunction[Any,Seq[String]] = {
case a: String => tmp = tmp:+a;tmp
case a+:Nil => pr(a)
case a:Seq[Any] => pr(a.head);pr(a.tail)
}
def asciiDisplay(root: TreeNode[String]): Seq[String] = {
def build(root: TreeNode[String], blank: Int = 0, realBlank: String =" "): Seq[Any] = root match {
case TreeNode(_,Nil) => s"${if(blank<2){realBlank * blank}else{""}}${if(blank>1){" |"+(realBlank*(blank-2))}else{""}}+-${root.data}"+:Nil
case x => s"${if(blank<2){realBlank * blank}else{""}}${if(blank>1){" |"+(realBlank*(blank-2))}else{""}}+-${root.data}" +: (root.children.map(build(_, blank+1)))
}
pr(build(root))
}
}
scala
最新推荐文章于 2024-09-10 15:59:28 发布