【发布时间】:2015-04-19 11:04:11
【问题描述】:
在 Scalaz 中,我有一个 Tree[A] 之类的;
'A'.node('B'.leaf, 'C'.node('D'.leaf), 'E'.leaf)
现在假设我有一个通过树递归并返回 TreeLoc 的函数;
def getCharLoc(c: Char) = tree.loc.find(_.getLabel == c)
然后我做类似的事情
Seq('D','E').flatMap(getCharLoc)
如何在树中找到最低和/或最高的loc。在上面的示例中,'D' 是最低/最深的位置,'E' 是最高/最浅的位置。
我在想每个loc 都有一个.path 方法,该方法将Stream 从本地返回到根。对此调用.length 将计算深度,可以在左侧折叠中进行比较,但感觉很笨重。
我怎样才能做到这一点?
【问题讨论】:
-
为什么'E'是'最浅'的位置,而不是'B'?
-
这是输入集中最浅的一个,只是 e & d。如果谈论整棵树,那么是的,它是 b.... 以及 c 和 e