「方法」に取り組む前に、次の 2 つのことを確認してください。
(1) - これはマイナーです。この質問は、単純な二分木ではなく、二分探索木 (BST) のコンテキストでのみ意味があります。3 と 4 が入れ替わっているため、このツリーは BST ではありません。
(2) - BST で削除を実行し、結果のツリーも BST になるようにツリーを「修正」したい場合はいつでも、次の 2 つの選択肢があります。削除するノードの左側のサブツリー、または (b) 削除するノードの右側のサブツリーで最小値を選択し、それを削除するノードと入れ替えます。(これらのオプションが両方とも BST を残す理由を納得させる必要があります)。あなたの例 (3 と 4 が正しく配置されている) では、これは 4 を 3 または 5 のいずれかと交換することを意味します。
では「やり方」について。上記からオプション (a) を選択したとしましょう。あなたがする必要があるのは、4 から始めて 1 ステップ左に移動し、可能な限り右にトラバースする関数を作成することです (なぜこれが正しいのかを自分自身で納得させる必要があります)。右に移動できなくなったら、左のサブツリーで最大値を見つけたことがわかります。次に、削除するノードの代わりにこの値を交換し、取得したばかりの値を持つノードを削除します。
ここで示したツリーのコーディング方法を理解していれば、これは実際には非常に簡単にコーディングできます。コード固有の質問がある場合は、詳細を記入してください