バイナリ検索ツリーからノードを削除しようとしています。特定の1つのケースを除いて、ツリー上の他のノードを正常に削除できます。ターゲットノードに2つの子があり、左の子に右のサブツリーがある場合は、正しい置換Nodeを見つけて、対象のNodeに値を切り替えることができますが、置換ノードは決して削除されません。私は17を削除しようとバイナリ検索ツリーノード置換が削除されないJava
、上の写真を見ると、プログラムが正しく13に移動し、13と17を置き換え、それをすることになっているとして、それはその後、元の13は削除されませんでしょう。
私は削除方法とその中で参照されている方法を添付しました。
Node rep = findReplacement(node.left);
node.value = rep.value;
rep = null;
あなたは、交換を見つけて、それにrep
ポイントを作っている:あなたのコードのこの部分を考えてみましょう
public class Node<T> {
public int value;
public Node left;
public Node right;
public Node parent;
public Node(int value) {
this.value = value;
}
}
あなたが引用したコードは、実際には私の一部の古いタイプミスですが、あなたが言っていることを理解しています。私は再び自分のコードを見ていきます。ありがとう。 –