2016-12-16 9 views

答えて

0

それは(探索木のように)ソートされた木であるならば、あなたが希望であるノードを削除しますしたいです通常はノード(例では2)を削除し、それを左の子サブツリーの右端の葉(3)または右のサブツリーの最も左の葉(4)に置き換えます。バイナリ検索ツリーでない場合は、同じことを実行できます。それは、もちろん、あなたのツリーのセマンティクスと構造が何を表しているかに依存します。構造が意味を持たない場合は、削除するノードを削除し、それを任意のリーフノードに置き換えます。

+0

0から3の右の子をリンクし、3から4の右の子をリンクして2を解放する必要がありますか? –

+0

2の左のサブツリーを忘れないでください!おそらくは3以上のものが含まれている可能性があります。また、割り当てを解放する再帰ルーチンがある場合は、2の子ポインタに注意してください(ノード2を解放する前にNULLに設定する必要があります)。別のオプションは、3が現在の葉から削除する値(2)へのデータ(3)の移動だけで、葉ノードを解放することです。置き換えはリーフノードからのものでなければならないことに注意してください。 (たとえば、0を削除する場合は、2を選択しないでください)。 – e0k

関連する問題