STRUKTUR
DATA
TA. 2020-2021
1
9.3 Istilah dalam Tree
Tabel 9.1 Istilah
Predecesor Node yang berada diatas node tertentu
Successor Node yang berada dibawah node tertentu
Ancestor Seluruh node yang terletak sebelum node tertentu dan
terletak pada jalur yang sama
Descendant Seluruh node yang terletak setelah node tertentu dan
terletak pada jalur yang sama
Parent Predecessor satu level diatas suatu node
Child Successor satu level dibawah suatu node
Sibling Node – node yang memiliki parent yang sama
Subtree Suatu node beserta descendantnya
Size Banyaknya node dalam suatu tree
Height Banyaknya tingkatan dalam suatu tree
Root Node khusus yang tidak memiliki predecessor
Leaf Node – node dalam tree yang tidak memiliki successor
Degree Banyaknya child dalam suatu node
2
9.4 Representasi Tree
3
c. Notasi Kurung
4
c. Skewed binary tree
Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu
child.
5
Gambar 9.12 Transversing
9.7 Operasi – operasi pada Tree
a. Create
Membentuk binary tree baru yang masih kosong.
b. Clear
Mengosongkan binary tree yang sudah ada.
c. Empty
Function untuk memeriksa apakah binary tree masih kosong.
d. Insert
Memasukkan sebuah node ke dalam tree. Ada tiga pilihan insert: sebagai
root, left child, atau right child. Khusus insert sebagai root, tree harus
dalam keadaan kosong.
e. Find
Mencari root, parent, left child, atau right child dari suatu node. (Tree tak
boleh kosong).
f. Update
Mengubah isi dari node yang ditunjuk oleh pointer current. (Tree tidak
boleh kosong).
g. Retrieve
Mengetahui isi dari node yang ditunjuk pointer current. (Tree tidak boleh
kosong).
6
h. DeleteSub
Menghapus sebuah subtree (node beserta seluruh descendantnya) yang
ditunjuk current. Tree tak boleh kosong. Setelah itu pointer current akan
berpindah ke parent dari node yang dihapus.
i. Characteristic
Mengetahui karakteristik dari suatu tree, yakni : size, height, serta average
lengthnya. Tree tidak boleh kosong
j. Traverse
Mengunjungi seluruh node-node pada tree, masing-masing
sekali.Hasilnya adalah urutan informasi secara linier yang tersimpan
dalam tree.
9.8 Pembuatan Tree
Pembuatan tree lebih mudah menggunakan binary search tree dimana jika
nilai simpul lebih kecil dari parent makan akan ditempatkan pada bagian kiri
dan jika nilai simpul lebih besar akan ditempetkan di sebelah kanan.
Contoh Program Queue dengan Liniear Array
Source Code :
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct Node{
int data;
Node *kiri;
Node *kanan;
};
7
void preOrder(Node *root){
if(root != NULL){
printf("%d ", root->data);
preOrder(root->kiri);
preOrder(root->kanan);
}
}
int main(){
int pil, data;
Node *pohon;
pohon = NULL;
do{
system("cls");
printf("\t#PROGRAM TREE C++#");
printf("\n\t==================");
printf("\nMENU");
printf("\n----\n");
printf("1. Tambah\n");
printf("2. Lihat pre-order\n");
printf("3. Lihat in-order\n");
printf("4. Lihat post-order\n");
printf("5. Exit\n");
printf("Pilihan : ");
scanf("%d", &pil);
switch(pil){
case 1 :
printf("\nINPUT : ");
printf("\n-------");
printf("\nData baru : ");
scanf("%d", &data);
tambah(&pohon, data);
break;
case 2 :
printf("\nOUTPUT PRE ORDER : ");
printf("\n------------------\n");
if(pohon!=NULL)
preOrder(pohon);
else
printf("Masih kosong!");
break;
case 3 :
8
printf("\nOUTPUT IN ORDER : ");
printf("\n------------------\n");
if(pohon!=NULL)
inOrder(pohon);
else
printf("Masih kosong!");
break;
case 4 :
printf("\nOUTPUT POST ORDER : ");
printf("\n------------------\n");
if(pohon!=NULL)
postOrder(pohon);
else
printf("Masih kosong!");
break;
}_getch();
}while(pil != 5);
return EXIT_FAILURE;
}
9
Gambar 9.14 Pre Order
10