小编anc*_*nch的帖子

BinaryTree的尾递归函数

我坚持实现tail递归foreach,reduce,map和toList函数,以实现二叉树的非常简单的实现.

sealed trait Tree[+A]
case object EmptyTree extends Tree[Nothing]
case class Node[A](value: A, left: Tree[A], right: Tree[A]) extends Tree[A]

object Tree {

  def apply[A]: Tree[A] = EmptyTree
  def apply[A](value: A): Tree[A] = Node(value, EmptyTree, EmptyTree)
  def apply[A](value: A, left: Tree[A], right: Tree[A]): Tree[A] = Node(value, left, right)

  def foreach[A](tree: Tree[A], f: (A) => Unit): Unit = {
    //@tailrec
    def iter[A](tree: Tree[A], f: (A) => Unit): Unit = tree match {
      case EmptyTree =>
      case Node(v, l, r) =>
        iter(l, f) …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala tail-recursion

4
推荐指数
1
解决办法
877
查看次数