2017-06-19 5 views
2

特定のバイナリツリーがバイナリ検索ツリーであるかどうかを確認するアルゴリズムを知っています。しかし、ツリーが完全に同じマシンに存在するわけではなく、複数のマシンに分散していることを考慮すると、このようなシナリオを処理するにはどうすればよいでしょうか?単一のマシンでは、ツリーの各ノードでレンジチェックメソッドを使用して、BSTかどうかをチェックします。データが必ずしも同じシステム上にあるわけではないこの種の質問を処理するために私が読むことができるリソースはありますか?ツリーが複数のマシンに分散されている場合、バイナリツリーはバイナリ検索ツリーですか?

+0

あなたはまた、そのような問題が発生する場所を教えた方がいいと思います。 –

+0

BSTが複数のマシンに分割されている場合、なぜ「レンジチェック方法」が問題になると思いますか?私は "範囲チェック方法"について聞いていないが、任意の特定のサブツリーに左右の境界を再帰的に渡す直感的なアプローチ(各ノードを一度訪れて問題を解決する)のように聞こえるが、これはうまく並列化できる。 – Dukeling

答えて

1

BSTにはプロパティがあります。それは各子供もBSTになります。すべてのマシンのバイナリツリーを検証し、各マシンBTをBSTにしたら、各マシンのBTのルートノードを取得し、ルートノードからのBSTの場合はツリーの検証を再度行います。

+0

良い洞察!私はこれが私が探していたものだと思います。 – user2532344

+0

別のアプローチが可能です.BST inorderにソートされたリストがあります。各ノードのBTでインオーダートラバーサルを行い、ソートされているかどうかをチェックし、そうでない場合はfalseを返します。そうでない場合は、各マシンからルートノードを取得し、BSTを検証します。 –

関連する問題