LAPORAN PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA II
MODUL
Pohon n-er
Disusun Oleh :
Syukur Jaya Mendrofa 201501072
Kelas: C
Dosen Pengampu :
Oskar Ika Adi Nugroho, ST., MT
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER “YOS SUDARSO”
PURWOKERTO
BAB I
DASAR TEORI
Pohon n-er
Pohon n-er adalah struktur pohon yang memiliki simpul turunan lebih dari dua.
Contoh Pohon n-er :
Pada pohon n-er dapat dilakukan kunjungan pada simpul-simpulnya seperti pada pohon biner.
Jika dilakukan kunjungan pada simpul-simpul pohon n-er diatas secara preorder akan menghasilkan :
A-B-E-F-C-G-D-H-I-J-K-L-M
Jika dilakukan kunjungan pada simpul-simpul pohon n-er diatas secara postorder akan menghasilkan :
E-F-B-G-C-H-I-K-L-M-J-D-A
Jika dilakukan kunjungan pada simpul-simpul pohon n-er diatas secara levelorder akan menghasilkan :
BAB II
void makeTree(char c, tree *T) {
simpul *node;
node = (simpul *) malloc(sizeof (simpul)); node->info = c;
node->sibling = NULL; node->child = NULL; (*T) .root = node; }
void addChild(char c, simpul **root){ if((*root) != NULL){
last = last->sibling;
void delChild(char c, simpul **root){
simpul *node = (*root)-> child; if (node != NULL){
while((node->sibling !=(*root)->child)&&(ketemu == 0)){ if (node->info == c){
/*jika hanya ada 2 anak*/
&&(ketemu == 0)){
if(root != NULL){
/*memproses simpul anak terakhir karena belum terproses dalam pengulangan*/ printTreePostOrder(node);
/*memproses simpul anak terakhir karena belum terproses dalam pengulanagn*/ printf(" %c ", node -> info);
/*memproses simpul anak terakhir karena belum terproses dalam pengulangan*/ printTreeLevelOrderNext(node);
}
void printTreeLevelOrder(simpul *root){ if(root != NULL){
printf(" %c ", root -> info); printTreeLevelOrderNext(root); }
(*root2)->info = root1->info; (*root2)->sibling = NULL; (*root2)->child = NULL;
if(root1->child != NULL){
if(root1->child->sibling == NULL){ /*jika memiliki satu anak*/
copyTree(root1->child, &(*root2)->child); }
/*memproses simpul anak terakhir karena belum terproses dalam pengulangan*/ copyTree(node1, &node2);
} } } }
int isEqual(simpul *root1, simpul *root2){ int hasil = 1;
hasil =
node = findSimpul('D', T.root);
printf(" WELCOME SYUKUR JAYA MENDROFA \n"); printf(" ================== \n");
node = findSimpul ('J', T.root); if(node != NULL){ printf(" preOrder setelah dihapus \n"); printTreePreOrder(T.root);
printf(" \n =============== \n");
return 0; }
ANALISA PRORGRAM
Cara kerja void PrintTreePreOrder
Mempunyai urutan :
Cetak isi simpul yang dikunjungi (simpul akar) Kunjungi cabang kiri
Kunjungi cabang kanan
Cara Kerja void PrintTreePostOrder
Mempunyai urutan : Kunjungi cabang kiri Kunjungi cabang kanan
Cetak isi simpul yang dikunjungi (simpul akar)
Sehingga output menghasilkan keluaran di layar :
Urutan pada LevelOrder yaitu melakukan kunjungan berdasarkan nilai/level depth yang terendah sampai yang tertinggi pada depth 0 yaitu A akar, kemudian depth 1 yaitu B C D, lalu depth 2 yaitu E F G H I J dan depth 3 yaitu K L M.
Sehingga output menghasilkan keluaran di layer :
Penghapusan pada preorder dilakukan berdasarkan kunjungan pada simpul anak yang terakhir di kunjungi yaitu anak (J) = K L M.
Sehingga output menghasilkan keluaran di layar :
Fungsi yang digunakan pada program di atas :
1. void makeTree
Inisialisasi sebuah tree, dengan mengisikan data ke simpul root, serta menetapkan bahwa simpul root tidak memiliki sibling dan child.
2. void addChild
Mengalokasikan suatu simpul baru yang sudah kita isikan dengan data terhadap suatu simpul yang menjadi parent-nya. Lalu ditetapkan juga bahwa simpul baru tersebut tidak memiliki sibling dan child.
3. void delChild
Melakukan proses delete jika child suatu simpul diketahui memiliki child atau sibling terlebih dahulu hingga simpul yang ingin kita hapus anaknya memang sudah 'aman'. Cara lain yang biasa dilakukan adalah kita langsung saja set bahwa childnya null. 4. simpul *findSimpul
Menelusuri setiap simpul hingga dapat ditentukan ditemukan atau tidak simpul dengan informasi tertentu yang sedang dicari. Dan jangan lupa untuk me-return simpul tersebut agar bisa digunakan untuk proses lainnya.
5. void printTreePreOrder
Menampilkan simpul pohon ke Output secara Preorder 6. void printTreePostOrder
Menampilkan simpul pohon ke Output secara Postorder 7. void printTreeLevelOrderNext
Menampilkan simpul pohon ke Output secara Levelorder if(root != NULL){simpul *node = root->child; if(node != NULL){if(node->sibling == NULL)
8. void printTreeLevelOrder
Menampilkan simpul pohon ke Output secara Levelorder if(root != NULL){ printf(" %c ", root -> info);
9. void copyTree
Menyalin pohon biner yang satu dengan pohon biner yang lainnya. 10. int isEqual (fungsi Boolean)
BAB III
KESIMPULAN
Berdasarkan dari tugas praktikum yang telah saya kerjakan saya dapat mengambil kesimpulan :
Kunjungan pada pohon n-er merupakan salah satu operasi yang sering dilakukan pada
suatu pohon biner tepat satu kali. Operasi ini terbagi menjadi 3 bentuk : 1. Kunjungan secara Preorder
Mempunyai urutan :
Cetak isi simpul yang dukunjungi (simpul akar) Kunjungi cabang kiri
Kunjungi cabang kanan 2. Kunjungan secara Postorder
Mempunyai urutan : Kunjungi cabang kiri Kunjungi cabang kanan
Cetak isi simpul yang dukunjungi (simpul akar) 3. Kunjungan secara Inorder
Mempunyai urutan : Kunjungi cabang kiri
Cetak isi simpul yang dukunjungi (simpul akar) Kunjungi cabang kanan
Pohon n-er adalah bentuk lain dari binary tree (pohon biner), namun keduanya masih sama-sama tree, artinya keduanya memiliki fungsi yang sama dalam penggunaannya. Misalnya digunakan untuk menyimpan data yang memiliki hubungan (relasi) berupa turunan (dan sebagainya) dengan data lainnya, juga seringkali digunakan pada DCS (decision support system).