Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Operasi pada pohon biner
2
Merupakan suatu rangkaian proses (atau fungsi-fungsi) yang dapat dibagi menjadi.
Insisialisasi Pembuatan simpul Pembuatan simpul akar Penambahan (insert) simpul baru Penghapusan (delete) seimpul Pembacaan/penelusuran pohon biner
3
Sebelum proses tersebut di atas dilaksanakan, pertama- tama deklarasi struktur simpul dan semua pinter yang diperlukan sbb: Pointer Root khusus untuk simpul akar Pointer P untuk simpul yang baru dibuat Pointer Q dan R sebagai pointer bantu
4
Proses inisialisasi Merupakan pemberian nilai awal pada suatu variabel atau kondisi yang dapat digunakan sebagai ciri suatu kondisi Root = NULL; P = NULL; Fungsi ini dilaksanakan sebelum fungsi yg lain. Pointer Root pada awalnya isinya sudah ada tetapi nilai tidak diketahui. Root = Null menjadi tanda pohon sudah ada atau belum
5
Pembuatan Simpul Jika pembuatan simpul gagal maka pointer P akan bernilai Null, “Pembuatan Simpul Gagal”
6
Membuat simpul Akar Sebelum membuat pohon pertama kali (simpul akar), periksa apakah pohon sudah ada (Root = Null) Bila sudah ada tidak perlu membuat simpul akar baru (pohon baru) Bila belum ada, periksa apakah simpul yang akan dibuat merupakan simpul akar (P != Null)
7
Membuat simpul Akar
8
Insert simpul Insert simpul ke dalam sebuah pohon menambahkan simpul baru tersebut menjadi subordinat sebuah simpul baik kiri maupun kanan. Terdapat dua cara: Insert urut nomor simpul, atau insert lever per level Insert pada nomor simpul tertentu
9
Insert urut nomor simpul, level per level
- Inser simpul sbg subordinat kanan: Root -> right = P - Inser simpul sbg subordinat kiri: Root -> left = P
13
Diperlukan sebuah array bertipe pointer
Array Q [n] digunakan sebagai tempat antrian
14
Contoh. struct Node { struct Node *Left; char INFO;
struct Node *Right; }; typedef struct Node Simpul; Simpul *P, *Root, *Current; Simpul *Q[30]; void Inisialisasi() { Root = NULL; P = NULL; }
15
Contoh. void BuatSimpul (char x) { P=(Simpul*) malloc(sizeof(Simpul));
if (P != NULL) P->INFO = x; P->Left = NULL; P->Right = NULL; } else printf ("Memory Heap Full"); exit (1);
16
Contoh. void BuatSimpulAkar() { if (Root == NULL) if(P != NULL)
Root = P; Root->Left = NULL; Root->Right = NULL; } else printf("\n Simpul Belum Dibuat"); printf ("Pohon Sudah Ada");
17
Contoh. void InsertUrutNomor() { int i, j, Flag; char x;
else { // data habis Flag = 1; j++; Q[j] = NULL; } if (Flag == 0) { x = getche(); if (x != '0') BuatSimpul (x); //Current = Q[i]; Current ->Right = P; j++; Q[j] = P; i++; void InsertUrutNomor() { int i, j, Flag; char x; Flag = 0; i=1; j=1; Q[i] = Root; while (Flag == 0 && j < 30) x = getche (); if (x != '0') BuatSimpul (x); Current = Q[i]; Current ->Left = P; j++; Q[j] = P; }
18
Contoh. void BacaUrutNomor() { int i, j, n, Counter; char x;
printf ("\n"); while (Q[i] != NULL) { Current = Q[i]; printf ("%c ", Current -> INFO); Counter ++; if (Counter == n) Counter = 0; n = n*2; } i++;
19
Contoh. int main() { int i, j, Flag; char x; clrscr(); Inisialisasi();
x = getche(); BuatSimpul (x); BuatSimpulAkar(); InsertUrutNomor (); BacaUrutNomor (); }
20
Contoh.
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.