如何在表示scala中生成树的Map中找到根。下面是一个包含树的Map示例。
val l = List((1,List(2,3,4)), (2,List(5,6)), (3,List(7,8,9))) val m1 = l.groupBy(_._1).map{ case (k, v) => (k, v.map(_._2))}
5fjcxozz1#
下面是一个单行程序,它返回所有节点的列表,这些节点没有出现在任何叶子列表中。
l.collect{ case (k, _) if !l.exists(_._2.contains(k)) => k }
更高效的双线版本:
val leaves = l.flatMap(_._2).toSet l.collect{ case (k, _) if !leaves.contains(k) => k }
效率更高:
val leaves: Set[Int] = l.flatMap(_._2)(collection.breakOut) l.collect{ case (k, _) if !leaves.contains(k) => k }
所有这些都回来了 List(1) 对于示例数据。
List(1)
1条答案
按热度按时间5fjcxozz1#
下面是一个单行程序,它返回所有节点的列表,这些节点没有出现在任何叶子列表中。
更高效的双线版本:
效率更高:
所有这些都回来了
List(1)
对于示例数据。