Scala: árbol Insertar cola recursión con estructura compleja

Estoy creando un árbol de objetos personalizados en Scala y mi método de inserción lanza un desbordamiento de pila porque no es una cola recursiva. Sin embargo, no sé cómo hacer que la cola sea recursiva. Los ejemplos relacionados que he visto usan variables de "acumulador", pero o bien han sido cosas como enteros que se pueden multiplicar y sobrescribir, o listas que tengo problemas para adaptarse a un árbol. Esto es lo que tengo:

La base de mis árboles:

abstract class GeoTree
case object EmptyTree extends GeoTree
case class Node(elem:GeoNode, left:GeoTree, right:GeoTree) extends GeoTree

El método de inserción para crear recursivamente el árbol (método que causa el desbordamiento de pila):

  def insert(t:GeoTree, v: GeoNode): GeoTree = t match {
    case EmptyTree => new Node(v, EmptyTree, EmptyTree)
    case Node(elem:GeoNode, left:GeoTree, right:GeoTree) => {
      if (v < elem) new Node(elem, insert(left, v), right)
      else new Node(elem, left, insert(right, v))
    }
  }

No creo que el código para elGeoNode En realidad es particularmente relevante porque es muy simple. La clase tiene dosLong atributos y la<, >y== Los operadores anulan apropiadamente para su uso dentro de un árbol. ¿Alguien puede hacer una sugerencia sobre cómo usar un acumulador para miinsert ¿Función, o alguna otra forma de hacerla cola recursiva?

Respuestas a la pregunta(1)

Su respuesta a la pregunta