StackOverflowError构建一棵树

时间:2016-07-03 21:48:10

标签: scala

我正在尝试构建一个树,其中一个节点可以有多个子节点(见下文)。当我尝试运行下面的应用程序时,我在数据案例类的声明中得到以下内容

  

线程“main”中的异常java.lang.StackOverflowError

这是什么意思?

// data: information stored in the node
// list: list of children nodes
// parent: pointer to the parent
case class Node[A] ( data: A, var list: List[Node[A]], var parent: Node[A] ) 

case class Data (descrip: String)

object Tree extends App {

   val root = Node(Data("root"),null,null)

    val node1 = Node(Data("node1"),null,root)
    val node2 = Node(Data("node2"),null,root)
    val list = List(node1, node2)

    root.list = list 

    println(root)

}

1 个答案:

答案 0 :(得分:2)

这意味着您的结构具有无限循环。 root.list包含node1node2,其中包含root

尝试打印(*)root,但要打印root,需要打印nodes 1和2,但要打印这些,需要打印root等等,永无止境,最终炸毁堆栈,这是JVM中存储方法调用信息的东西。

(*)这里使用的单词“print”相当松散,实际上是object.toStringobject所涉及的每个app -templates -registration -logout.html -base.html 的调用。