この記事の例では、Javaを使用して合併と削除を使用してバイナリツリーのノードを削除する方法について説明します。あなたの参照のために全員のためにそれを共有してください。特定の分析は次のとおりです。
実装のアイデアは非常に簡単です:
最初:削除するノードを見つけます
2番目:削除されたノードが右サブツリーがない場合、左サブツリーチェーンは親ノードに
3番目:削除されたノードが残っていない場合、親ノードへの左サブツリーチェーン
フォース:削除されたノードが左右の場合、削除ノードの後にサブツリーをマージできます。ノードを削除する左サブツリーの右ノードを使用し、右のサブツリーを指す2つの方法があります。削除ノードの削除、もう1つは、削除されたノードの数の左端ノードで削除されたノードの左サブツリーを削除したノードの数の左のノードで指すことです。
Javaの実装は次のとおりです。
public void deletebyerring(int el){intbstnode tmp、node、p = root、prev = null; .key <el)p = p.right;}/*ed*/node = p; )//右の子供はnode.leftに添付されていませんnode = node.richt //そのpaintelse {tmp = node.lid!= null)tmp.richt; ; //左サブツリーの右端のノードと右のsubtreenode.Left;} if(p == root){root)= node;} else if(prev.left == p){prev .left = node;} else prev.richt = node} else if(root!= null){system.out.println( "ノードはツリーにありません");この記事がすべての人のJavaプログラムのデザインに役立つことが期待されています。