Hapus node pada tree bahasa java

Disini saya ingin menghapus salah satu node di tree, konsepnya jika node tidak punya child, langsung dihapus. Jika punya node, maka diambil node terbesar dikiri node yang dihapus, node yang akan dihapus diganti isinya dengan node terbesar tersebut, lalu node terbesar tersebut di hapus.

Saya mencoba membuat algoritma rekursif dengan bahasa c dan berhasil, tapi pada java algoritma tersebut gagal diterapkan, berikut codenya

int maxValue(Node localRoot) {
        if (localRoot.right == null)
              return localRoot.data;
        else
              return minValue(localRoot.right);
	}

void hapus(Node localRoot,int x){
	if (x < localRoot.data){
	    hapus(localRoot.left,x);
	}
	else if (x > localRoot.data){
	     hapus(localRoot.right,x);
	}
	if(x == localRoot.data){
	     if(localRoot.left!=null){
	        localRoot.data = maxValue(localRoot.left);
	    	hapus(localRoot.left,maxValue(localRoot.left));
	     }
	     else if(localRoot.right!=null){
		localRoot.data = minValue(localRoot.right);
		hapus(localRoot.right,minValue(localRoot.right));
	     }
	     else{
	        localRoot = null;
	     }
        }
}

ketika di tes : preOrder : 5 2 1 3 6 preOrder setelah dihapus node 5 : 3 2 1 3 6

Berarti angka 5 berhasil diganti dengan nilai 3 namun angka 3 yg selanjutnya tidak dihapus, Bagaimana cara menghapus node di tree pada java ??

Trimakasih

avatar diazpace
@diazpace

58 Kontribusi 28 Poin

Diperbarui 8 tahun yang lalu

2 Jawaban:

Ane pernah nyoba nih. Ane coba bantu tapi logik yang agan paparkan agak rancu bagi ane. Koreksi ane kalo salah. Disini saya ingin menghapus salah satu node di tree, konsepnya jika node tidak punya child, langsung dihapus. Jika punya node,maka diambil node terbesar dikiri node yang dihapus Ini maksudnya -> 'Jika punya child, maka diambil child terbesar di kiri node yang dihapus'

-&gt; 'node yang akan dihapus diganti isinya dengan child terbesar tersebut, lalu node tersebut dihapus'

Kira2 maksudnya begitu bukan?

avatar newbieindonesian24
@newbieindonesian24

15 Kontribusi 19 Poin

Dipost 8 tahun yang lalu

iya gan, seperti itu logikanya..

avatar diazpace
@diazpace

58 Kontribusi 28 Poin

Dipost 8 tahun yang lalu

Login untuk ikut Jawaban