我正在尝试了解 scalaz 树结构并且遇到了一些困难!
首先我定义了一棵树:
val tree: Tree[Int] =
1.node(
2.leaf,
3.node(
4.leaf,
5.leaf))
到目前为止,我已经使用TreeLoc研究了如何找到与某个谓词匹配的第一个元素。例如,查找值为 3 的第一个节点:
tree.loc.find(x => x.getLabel == 3)
我的下一个挑战是尝试找到与某个谓词匹配的所有节点。例如,我想找到所有叶节点(使用TreeLoc和isLeaf应该很容易)。不幸的是,我一生都无法弄清楚如何走树来做到这一点。
编辑:对不起,我认为我最初的问题不够清楚。需要明确的是,我想以这样一种方式遍历树,以便我可以获得有关节点的信息。Flatten、foldRight 等只允许我对 [Int] 进行操作,而我希望能够对 Tree[Int](或 TreeLoc[Int])进行操作。