Anda di halaman 1dari 8

Struktur Data

TREE (POHON) 
 
Tree  (pohon)  merupakan  struktur  data  non  linier,  struktur  pohon 
mengelola  data  sehingga  item‐item  informasi  terhubung  lewat 
cabang‐cabang pohon tersebut. 
 
1. Terminologi 
 
  Root                Level 
  v0  A ............................................................ 0 
 
  e0                e1      e2 
 
  v1  B v2  C v3  D .................................. 1 
 
 
 
 
  E F G H I ................ 2 
 
 
 
 
  J K L M N ......................... 3 
 
 
‐ Pohon  merupakan  himpunan  vertex  (simpul/node/titik)  dan 
edge  (sisi/arc/busur)  di  mana  salah  satu  simpul,  yaitu  simpul 
paling  atas  (pada  gambar  di  atas    adalah  simpul  A)  merupakan 
root (akar). 
‐ Simpul dinotasikan dengan lambang V (vertex), sedangkan edge 
dinatasikan  dengan  e.  Jika  jumlah  simpul  adalah  n  dan  jumlah 
busur adalah m, maka m=n‐1. 
‐ T=(V,E) 

1
Widodo
Struktur Data

‐ Superordinat  adalah  simpul  yang  merupakan  simpul 


pendahulunya,  sering  disebut  sebagai  parent  atau  father,  misal 
simpul F adalah superordinat dari simpul J,K, dan L.  
‐ Subordinat adalah simpul yang merupakan anak sebuah simpul, 
sering disebut sebagai son atau children, misal simpul H adalah 
subordinat simpul D. 
‐ Root  atau  akar  adalah  simpul  awal  atau  simpul  yang  tidak 
memiliki superordinat, pada gambar di atas A adalah root. 
‐ Leaf (daun) adalah simpul yang tidak memiliki subordinat, pada 
gambar  di  atas  yang  merupakan  daun  adalahg  simpul 
E,J,K,L,C,G,M,N,I. 
‐ Level  awal  adalah  root,  yaitu  level  0  (ada  yang  menyatakan 
berada  pada  level  1),  setiap  berpindah  ke  subordinatnya  maka 
level akan bertambah satu. 
‐ Depth  (kedalaman)  sebuah  pohon  adalah  level  tertinggi  yang 
dimiliki  oleh  pohon  tersebut,  tree  di  atas  memiliki  depth=3. 
(sebagian  referensi  menamakannya  sebagai  ketinggian 
pohon/height). 
‐ Derajat  (degree)  sebuah  simpul  adalah  jumlah  subordinat  yang 
dimiliki oleh simpul tersebut. Derajat simpul B=2, derajat simpul 
D=3. 
‐ Derajat  (degree)  sebuah  pohon  adalah  derajat  simpul  yang 
tertinggi  yang  dimiliki  oleh  pohon  tersebut.  Pohon  di  atas 
memiliki degree=3. 
 
2. Pohon M‐ary / K‐ary 
M atau K adalah derajat yang dimiliki sebuah pohon. Pada pohon 
yang menjadi contoh di atas berarti M atau K‐nya adalah 3 (Pohon 
3‐ary). Simpulnya dapat diilustrasikan sebagai berikut: 
 
 
  INFO
 
 
 
  Link1    Link2    Link3 
2
Widodo
Struktur Data

Struktur simpul tersebut dapat dibuat dengan: 
 
typedef struct Node {
int INFO;
struct Node *Link1;
struct Node *Link2;
struct Node *Link3;
}
typedef struct Node Simpul;

Untuk binary tree (pohon biner) berarti hanya ada 2 link, sehingga 
link1  bisa  dianggap  sebagai  Left  (L),  dan  link2  bisa  dianggap 
sebagai  Right  (R).  Sehingga  struktur  simpulnya  dapat  dibuat 
sebagai berikut: 
 
typedef struct Node {
int INFO;
struct Node *Right;
struct Node *Left;
}
typedef struct Node Simpul;
 
‐ Link  adalah  sebuah  pointer  yang  digunakan  untuk  menunjuk 
simpul  subordinat.  Jika  pohon  adalah  pohon  biner,  maka  Left 
merupakan  pointer  yang  menunjuk  subordinat  kiri,  sedangkan 
Right merupakan pointer yang menunjuk subordinat kanan. 
‐ Null‐Link adalah pointer yang tidak menunjuk simpul subordinat 
karena memang tidak memiliki simpul subordinat. 
 
Konversi pohon M‐ary ke pohon biner 
Misalkan  pohon  3‐ary  pada  contoh  di  atas  akan  dijadikan  pohon 
biner, maka langkahnya adalah: 
Simpul  A  memiliki  3  anak,  yaitu  simpul  B,C,  dan  D.  Ubah  garis 
strukturnya  dengan  hanya  menghubungkan  simpul  A  kepada 
simpul B yang dianggap sebagai anak tertua melalui garis hubung 
kiri,  sedangkan  anak  lain  dihubungkan  dengan  simpul  B  yaitu 
simpul C menjadi subordinat kanan dari simpul B sedangkan simpul 

3
Widodo
Struktur Data

D  menjadi  subordinat  kanan  dari  simpul  C.  Demikian  seterusnya 


sampai didapatkan pohon biner. 
 
3. Pohon Biner 
‐ Strictly Binary Tree, pohon biner yang semua simpulnya (kecuali 
simpul daun) memiliki simpul subordinat kiri dan kanan. 
‐ Sebuah strictly binary tree, jika mempunyai n buah simpul daun, 
maka akan memiliki (2n‐1) buah simpul. 
 
   A   A 
 
 
   B    C   B    C 
 
 
   D    E 
 D    E    F   G 
 
 
 J   K 
    J   K 
 
 
‐ Complete  Binary  Tree/Full  Binary  Tree  dengan  tingkat 
kedalaman = d, adalah sebuah pohon strictly binary tree dengan 
seluruh simpul daun berada pada level d. 
‐  
 A 
 
 
 
 B   C 
 
 
 
 D    E    F   G 
 
 
    J   K    J    J   K   K 
 K    J 
 

4
Widodo
Struktur Data

‐ Pada pohon complete binary tree berlaku: 
 Pada level k, jumlah simpul  n=2^k 
 Untuk  pohon  dengan  kedalaman  d,  maka  jumlah  seluruh 
simpul, n=2^(d+1)‐1 
 Untuk pohon dengan kedalaman d, maka jumlah simpul daun 
adalah n=2^d, jumlah simpul bukan daun adalah n=(2^d)‐1  
 Jika  jumlah  total  simpul  adalah  n,  maka  kedalaman  pohon 
adalah d=log2(n+1)‐1 
 
‐ Almost  Complete  Binary  Tree  adalah  pohon  biner  yang  pada 
kedalaman  di  bawah  level  1  setiap  simpul  harus  memiliki 
subordinat  kanan  dan  kiri.  Jika  pada  level  d‐1  subpohon  kanan 
ada yang memiliki subordinat, maka setiap simpul pada level d‐1 
subpohon kiri harus memiliki subordinat kanan dan kiri. 
‐  
   A 

 
 
   B   C 

 
 
 D    E    F   G 
 
 
 
  J   K    J   K    J    J 
 
 
‐ Pohon  Biner  Seimbang  (Balanced  Binary  Tree),  adalah  pohon 
biner yang kedalaman subpohon kiri dan subpohon kanan paling 
banyak berselisih satu. 
 
4. Penomoran Simpul Pohon Biner 
Jika  sebuah  simpul  memiliki  nomor  n,  maka  subordinat  kirinya 
memiliki nomor simpul 2n, dan subordinat kanan memiliki nomor 
simpul 2n+1. Simpul akar diberi nomor 1. 

5
Widodo
Struktur Data

Dengan  mengetahui  nomor  setiap  simpul,  maka  sebuah  pohon 


biner dapat direpresentasikan dalam array satu dimensi. 
  1 
 A 
 
 
  2  3 
 B   C 
 
 
  4  5  7 
   D    E    F 

 
            11  14 
  10   G   H    I 
 
 
Pohon tersebut dapat direpresentasikan ke dalam array berikut: 
 
1      2      3      4       5      6      7      8      9     10    11   12     13   14 
    A       B     C     D      E      F    G    H     I
 
 
Dengan  penomoran  ini,  untuk  menyimpan  sebuah  pohon  biner 
dengan  kedalaman  =  d,  diperlukan  array  satu  dimensi  dengan 
jumlah elemen minimal sebanyak 2^(d+1)‐1 elemen. 
 
5. Pembuatan Sebuah Simpul 
void BuatSimpul(char x)
{ P=(Simpul*) malloc(sizeof(Simpul))
if(P!=NULL)
{ P->INFO=x;
P->Left=NULL;
P->Right=NULL;
}
else
{ printf(“Pembuatan simpu gagal”);
}
}
 
 

6
Widodo
Struktur Data

6. Membuat sebuah simpul menjadi akar (root) 

void BuatSimpulAkar()
{ if(Root==NULL)
{ if(P!=NULL)
{ Root=P;
Root->Left=NULL;
Root->Right=NULL;
}
else
printf(“\n Simpul belum dibuat”);
}
else
printf(“\n pohon sudah ada”);
}
 
7. Insert (menambahkan) simpul ke pohon urut nomor 
 
void InsertUrutNomor()
{ int i,j,flag;
char X;
flag=0; i=1; j=1;
Q[i]=Root;
while(flag==0 && j<127)
{ X=getch;
if(X!=’0’)
{ BuatSimpul(X);
Current=Q[i];
Current->Left=P;
j++;
Q[j]=P;
}
else \\ data habis
{ flag=1;
j++;
Q[j]=NULL;
}

if(flag==0)
{ X=getch;
if(X!=’0’)
{ BuatSimpul(X);
Current->Right=P;
j++; Q[j]=P; }
else \\ data habis
{ flag=1;
j++;

7
Widodo
Struktur Data

Q[j]=NULL;
}
i++;
}

 
Program utamanya (main program) dapat dibuat berikut: 
 
main()
{ int i,j, flag;
char X;
system(“cls”);
Inisialisasi();
X=getch();
BuatSimpul(X);
BuatSimpulAkar();
InsertUrutNomor();
}
 
 
 
8.  
9.  
 

8
Widodo

Anda mungkin juga menyukai