Postingan lainnya
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
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'
-> 'node yang akan dihapus diganti isinya dengan child terbesar tersebut, lalu node tersebut dihapus'
Kira2 maksudnya begitu bukan?