Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Pohon Biner.

Presentasi serupa


Presentasi berjudul: "Pohon Biner."— Transcript presentasi:

1 Pohon Biner

2 Definisi BST Binary Search Tree (BST) adalah pohon biner yang berisi elemen sejenis dan unik dengan sifat khusus Seperti contoh sbb : Diketahui sebuah pohon biner dengan akar X serta sub pohon kiri T1 dan sub pohon kanan T2 a. BST Naik berlaku sifat : - Y Є T1 < X < Z Є T2 dimana T1 dan T2 juga BST - Apabila ditelusuri Inorder akan terurut menaik b. BST Turun berlaku sifat : - Y Є T1 > X > Z Є T2 dimana T1 dan T2 juga BST - Apabila ditelusuri Inorder akan terurut menurun X T2 T1

3 Definisi dan Sifat BST 7 12 3 9 4 6 8 5 Binary Search Tree
T1 dan T2 juga berupa Binary Search Tree BST merupakan penjelmaan dari proses Pencarian, karena bentuknya yang teratur (Sorted) Perhatikan gambar tree berikut : 7 12 3 9 4 6 8 5 Binary Search Tree Bukan Binary Search Tree

4 Contoh BST : Jika input adalah 21 bilangan integer berikut: 8,9,11,15,19,20,21,7,3,2,1,5,6,4,13,14,10,12,17,16,18 8 7 9 3 2 1 5 4 6 11 10 15 13 19 12 14 20 21 17 16 18

5 Operasi-Operasi BST : Mengosongkan BST (Makenul(T))
Tujuan : Untuk Menciptakan BST pertama sekali atau mengosongkan BST yang sudah terisi (mengosongkan yang sudah terisi tidak dianjurkan, sebab untuk representasi linked list akan membuat node tetap berada dimemori) Mencek apakah BST kosong (Empty(T)) Tujuan : Untuk Mengetahui apakah BST T kosong atau tidak. Suatu fungsi yang menghasilkan nilai True jika BST kosong atau nilai False jika BST tidak kosong. Operasi ini biasa dilakukan sebelum melakukan operasi menghapus, mencari atau menampilkan

6 Operasi-Operasi BST : Mencari Tree Minimum (Tree_Minimum(T))
Tujuan : Untuk mencari isi node paling minimum. Proses pencarian dilakukan mulai dari root dan berlanjut ke leftchild hingga Null. Hal ini dilakukan, sebab elemen node minimum dijamin paling kiri Mencari Tree Maksimum (Tree_Maksimum(T)) Tujuan : Untuk mencari isi node paling maksimum. Proses pencarian dilakukan mulai dari root dan berlanjut ke rightchild hingga Null. Hal ini dilakukan, sebab elemen node maksimum dijamin paling kanan

7 Operasi-Operasi BST : Memasukkan data baru ke dalam BST (Insert(x,T))
Tujuan : Suatu operasi untuk memasukkan elemen x ke dalam BST (BST unik, dimana tidak ditemukan 2 atau lebih elemen yang sama). Untuk operasi insert berlaku ketentuan : - Pencarian lokasi untuk node yang akan diinsert selalu dimulai dari root - Jika node yang diinsert lebih kecil dari root , maka insert di daun pada left subtree - Jika node yang diinsert lebih besar dari root , maka insert di daun pada right subtree

8 Operasi-Operasi BST : 6. Mencari elemen tertentu dalam BST (Search(x,T)) Tujuan : Suatu operasi untuk mencari elemen x apakah ada dalam BST atau tidak. Apabila ada maka fungsi menghasilkan nilai True dan False apabila tidak ada Menghapus elemen tertentu dari BST (Delete(x,T)) Tujuan : Suatu operasi untuk menghapus elemen x dari BST apabila ditemukan. Apabila dilakukan penghapusan, dimungkinkan terjadi perubahan pada BST :

9 Ketentuan Operasi Delete BST :
Jika yang didelete adalah leaf (daun) maka BST tidak berubah Jika yang didelete adalah node yang hanya memiliki satu anak, maka anak tersebut langsung menggantikan posisi dari parent-nya Jika yang didelete adalah node dengan 2 anak (2 subtree), maka node yang diambil menggantikan node yang dihapus adalah : Jika berasal dari left subtree, maka diambil node paling kanan (nilai terbesar) Jika berasal dari right subtree, maka diambil node paling kiri (nilai terkecil)

10 Operasi-Operasi BST : Menampilkan semua elemen dalam BST (Tampil(T))
Tujuan : Suatu operasi untuk menampilkan semua elemen dimiliki BST. Urutan tampilan elemen dapat disesuaikan dengan operasi penelusuran : Preorder, Inorder atau Postorder

11 Algoritma Mengosongkan BST
void Makenul (BST T) { T = NULL; } Hasil : T null (artinya T menunjuk ke null)

12 Fungsi Memeriksa apakah BST kosong
int Empty(BST T) { if (T== NULL) return 1; else return 0; } Hasil : Return 1 (True) jika T menunjuk ke NULL dan 0 jika T tidak menunjuk ke NULL

13 Fungsi Mencari Elemen Minimum
BST Tree_Minimum (BST T) { if (! Empty (T)) { while (T->Kiri !=NULL) { T = T->Kiri; } return T; } Hasil : 2

14 Fungsi Mencari Elemen Maksimum
BST Tree_Maksimum(BST T) { if (! Empty (T)) { while (T->Kanan !=NULL) { T = T->Kanan; } return T; } Hasil : 13

15 Fungsi Memasukkan data baru ke BST
void Insert( int x, BST T) { if (T ==NULL) (* Jika ditemukan T yang null *) { new(T); (* ciptakan node baru ditunjuk oleh T *) TKiri = NULL; (* Set pointer kiri = null *) TInfo = x; (* Isi data pada node = x *) TKanan = NULL; (* Set pointer kanan = nil *) } else if (x == TInfo) (* x sudah ada dalam T *) printf(‘Error : data tersebut sudah ada *) else if (x < TInfo) Insert(x, TKiri) (*jika x < data yg ditunjuk T, maka sisipkan x ke kiri*) else (* x > Info yang ditunjuk T sisipkan x ke kanan *) Insert(x, TKanan)

16 Fungsi Mencari Elemen Tertentu
int Search (int x, BST T ) { if (T == NULL) Search = 0; else if (x == TData) Search = 1; (* x ditemukan *) else if (x < TData) Search = Search(x, TKiri) (*cari x ke kiri *) else Search= Search(x, TKanan) (* cari secara rekursif ke kanan *) }

17 Fungsi Menghapus Elemen Tertentu
void Delete (int x , BST T) { BST Bantu; if (T == NULL) printf(”Error : %d Tidak Ditemukan ”, x); else if (x < TData) Delete(x, TKiri); (* rekursif ke kiri *) else if (x > TData) Delete(x, TKanan) (*rekursif ke kanan *) else if ((TKiri == NULL) && (TKanan ==NULL)) (*Kasus x adalah daun *) { Bantu = T; (*Tangkap node dengan pointer Bantu *) T = NULL; (*potong T yang menunjuk node berisi x *) free(Bantu) (*deallocate Bantu atau lepaskan node *) }

18 Fungsi Menghapus Elemen Tertentu
else if (TKiri ==NULL) (*x berada pada node dimana kirinya nil *) { Bantu = T; T = TKanan; (* Set T = pointer kanannya *) BantuKanan = NULL; (*memutusnode ke kanannya *) free(Bantu); (*lepaskan node berisi x *) } else if (TKanan == NULL) (*x berada dinode dimana kanannya nil *) T = TKiri ; (* Set T = pointer kirinya *) BantuKiri = NULL; (*memutus node ke kirinya *) free (Bantu); (* lepaskan node yang berisi x *) else TData = DeleteMin(TKanan);

19 Fungsi Menghapus Elemen Tertentu
Int DeleteMin (BST T) { BST Bantu; if (TKiri == NULL) (*ditemukan data terkecil *) { Bantu = T ; (* pegang data terkecil *) DeleteMin = TData; (*Ambil&simpan data terkecil *) T = TKanan; (* Set T = pointer kanannya *) BantuKanan = NULL; (*lepas hubungan node tsb dgn anaknya *) free (Bantu); (*lepaskan node yang berisi data terkecil *) } else DeleteMin = DeleteMin(TKiri); (*rekursif ke kiri *)

20 Menampilkan semua elemen dalam BST
void Tampil(T) { int Pilih; clrscr(); printf(“1. Tampil Secara Preorder \n”); printf(“2. Tampil Secara Inorder \n”); printf(“3. Tampil Secara Postorder \n’); printf(”Silahkan Pilih : ”); scanf(”%d”, &Pilih); if (Pilih == 1) Preorder(T); else if (Pilih == 2) Inorder (T); else Postorder(T); }

21 Ilustrasi Operasi BST Makenul(T) Insert(7,T) Insert(3,T) Insert(13,T)
Delete(17,T) Delete(13,T) Delete(7,T)

22 Contoh Ilustrasi Operasi BST
Makenul(T) : Prosedur ini menghasilkan T sebagai berikut: Insert (7,T) terhadap T sebelumnya (masih null) menghasilkan T yang baru berikut ini:

23 Contoh Ilustrasi Operasi BST
3. Insert(3, T) terhadap T yang berisi 7 menghasilkan T yang baru berikut ini: 4. Insert(13, T) terhadap T yang berisi 3, 7 menghasilkan T yang baru berikut ini:

24 Contoh Ilustrasi Operasi BST
Insert(17, T) terhadap T menghasilkan T yang baru berikut ini:

25 Contoh Ilustrasi Operasi BST
Insert (2, T) terhadap T yang berisi 3,7,13,17 menghasilkan T yang baru berikut ini:

26 Contoh Ilustrasi Operasi BST
Insert (11, T) terhadap T yang berisi 2,3,7,13,17 menghasilkan T yang baru berikut ini:

27 Contoh Ilustrasi Operasi BST
8. Insert (5, T) terhadap T yang berisi 2,3,7,11,13,17 menghasilkan T yang baru berikut ini:

28 Contoh Ilustrasi Operasi BST
9. Delete (17, T) : Perhatikan urutan operasi dan nomor yang ada pada gambar.

29 Contoh Ilustrasi Operasi BST
10. Delete(13, T) terhadap T di atas dimana 13 berada pada node yang kanannya kosong, sehingga pointer yang menunjuk 13 dialihkan ke node yang berisi 11 dan hubungan 13 dengan 11 diputuskan. Kemudian node yang berisi 13 dibuang dengan perintah free. Proses penghapusannya dilakukan seperti terlihat pada gambar di bawah ini:

30 Contoh Ilustrasi Operasi BST
Sementara hasil setelah hapus 13 adalah sebagai berikut:

31 Contoh Ilustrasi Operasi BST
11. Delete(7, T) terhadap T yang terakhir dan kebetulan 7 adalah akar dimana kiri dan kanannya tidak kosong. Sesuai dengan algoritma Delete di atas maka pengganti 7 diambil minimum dari sebelah kanan. Di sebelah kanan 7 hanya ada 13 dan sekaligus minimum di sebelah kiri 7. Proses hapus 7 dilakukan dengan menimpa 7 oleh 13 dan node yang berisi 13 dibuang dan hasil akhir diperoleh sebagai berikut:


Download ppt "Pohon Biner."

Presentasi serupa


Iklan oleh Google