最小限の操作を計算して、2つのツリー構造を同一にします
これはCSの質問ですが、興味深い質問です。 多かれ少なかれ同じノードが再編成された2つのツリー構造があるとしましょう。どのように見つけますか どれか ある意味で最小限 操作のシーケンス MOVE(A, B) -ノードAをノードBの下に移動します(サブツリー全体を含む) INSERT(N, B)-ノードBの下に新しいノードNを挿入します DELETE (A) -ノードAを削除します(サブツリー全体を含む) これは、あるツリーを別のツリーに変換します。 明らかに、そのような変換が不可能な場合があります。たとえば、ルートAと子Bから、ルートBと子Aなどです。このような場合、アルゴリズムは単に「不可能」な結果をもたらします。 さらに壮観なバージョンは、ネットワークの一般化です。つまり、ノードがツリー内で複数回発生する可能性がある(事実上複数の「親」を持つ)と想定し、サイクルは禁止されています。 免責事項:これは宿題ではありません。実際には実際のビジネス上の問題から来ているので、誰かが解決策を知っているのではないかと思うと非常に興味深いと思いました。