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
}