我想比較2個二叉樹(按順序),並且我想盡早返回,如果它們不相同。優雅的解決方案來比較2個二叉樹,並在最早的時間返回false
我知道你可以遍歷兩棵樹,然後比較輸出,但我想要一個更聰明的解決方案以某種方式在最早的時間返回。
你會如何以scala的方式做到這一點?演員?
節點:
case class Node(
var data: Int,
left:Option[Node],
right:Option[Node]
)
在我主我有3棵樹的是目前完全一樣的,只是將其粘貼在這裏,因此可以根據需要進行修改:
def main(args:Array[String]) = {
val tree = Node((3),
None,
Some(Node((5),
Some(Node((1),
None,
None)),
Some(Node((9),
None,
Some(Node((15),
None,
None)))) )) )
val tree2 = Node((3),
None,
Some(Node((5),
Some(Node((1),
None,
None)),
Some(Node((9),
None,
Some(Node((15),
None,
None)))) )) )
val tree3 = Node((3),
None,
Some(Node((5),
Some(Node((1),
None,
None)),
Some(Node((9),
None,
Some(Node((15),
None,
None)))) )) )
}
在Java中有新的Fork/Join框架,它允許您執行併發的DFS,當它發現第一個區別時可以保釋。也許你可以將它用於Scala? –
只是一個建議:你可以壓縮tuple-2中的樹,並使用遍歷函數以同樣的方式訪問樹,直到元組的元素髮散。或者,您可以並行運行BFT和DFT,並在第一次失敗時停止。 –