二分探索木の 2 つのノードが交換されます。
入力ツリー:
10
/ \
5 8
/ \
2 20
上記のツリーでは、ノード 20 と 8 を交換してツリーを修正する必要があります。
出力ツリー:
10
/ \
5 20
/ \
2 8
ここに記載されている解決策に従いました。しかし、次の理由により、解決策が正しくないと感じています。
サイトによると:
スワップされたノードは、BST の順序どおりのトラバーサルでは隣接していません。
たとえば、ノード 5 と 25 は で交換され
{3 5 7 8 10 15 20 25}
ます。
与えられたツリーの順不同のトラバーサルは次のとおりです。3 25 7 8 10 15 20 5
注意深く観察すると、順不同のトラバーサル中に、ノード 7 が以前に訪問したノード 25 よりも小さいことがわかります。ここで、ノード 25 (前のノード) のコンテキストを保存します。ここでも、ノード 5 が前のノード 20 よりも小さいことがわかります。今回は、ノード 5 (現在のノード) のコンテキストを保存します。最後に、2 つのノードの値を交換します。
したがって、私のポイントは、5 よりも大きいため 20 を考慮すべきよりも 7 よりも大きいために 25 を考慮している場合です。