Scalaz Tree类通过TreeLoc (Javadoc)证明了非常有用的“Zipper”功能。

但是,对我而言,如何轻松地遍历一棵树(例如在包含总共n> k个节点的树中找到“第k个”节点)而无需对拉链是否在当前孩子列表的末尾。

有没有一种简单的方法可以做到这一点,而我却没有呢?

最佳答案

TreeLoc.find 方法窃取,您可以执行以下操作:

  def findAt[A](tree: TreeLoc[A], k: Int): Option[TreeLoc[A]] = {
    Cobind[TreeLoc].cojoin(tree).tree.flatten.drop(k).headOption
  }

07-26 07:43