Diktat_Prosedural_12_Pohon

Diktat_Prosedural_12_Pohon

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Left(P) ← L Right(P) R { end if } →P procedure MakeTree (input X : infotype, input L, R : BinTree, output P : BinTree) { Menghasilkan sebuah tree, jika alokasi berhasil P } KAMUS LOKAL ALGORITMA P ← Alokasi (X) if (P ≠ Nil) then Left(P) ← L Right(P) ← R { end if } Oleh: Inggriani Liem/Revisi bab oleh: Tim IF2030 sem. 1 2011-2012/Tgl. Revisi: 21 Nov 2011 10 Draft Diktat Struktur Data Hanya untuk digunakan di lingkungan Sekolah Teknik Elektro dan Informatika ITB Pohon Seimbang (Balanced Tree) Pohon seimbang: • Pohon seimbang tingginya: perbedaan tinggi sub pohon kiri dengan sub pohon kanan maksimum 1. • Pohon seimbang banyaknya simpul: perbedaan banyaknya simpul sub pohon kiri dengan sub pohon kanan maksimum 1. Berikut ini adalah algoritma untuk pohon yang seimbang banyaknya simpulnya. function BuildBalancedTree (n : integer) → BinTree { Menghasilkan sebuah balanced tree } { Basis: n = 0: Pohon kosong } { Rekurens: n>0: partisi banyaknya node anak kiri dan kanan, lakukan proses yang sama } KAMUS LOKAL P : address nL, nR : integer ALGORITMA if (n=0) then {Basis } → nil else {Rekurens } { bentuk akar } input(X) P ← Alokasi(x) if (P ≠ Nil) then { Partisi sisa node sebagai anak kiri dan anak kanan } nL ← n div 2; nR ← n – nL - 1 L ← BuildBalancedTree(NL); R ← BuildBalancedTree(NR) Left(P) ← L; Right(P) ← R →P Urutan pembentukan : N=1 N=2 N=6 N=3 N=4 N=5 N=7 Oleh: Inggriani Liem/Revisi bab oleh: Tim IF2030 sem. 1 2011-2012/Tgl. Revisi: 21 Nov 2011 11 Draft Diktat Struktur Data Hanya untuk digunakan di lingkungan Sekolah Teknik Elektro dan Informatika ITB Contoh eksekusi jika data yang dibaca adalah 1,2,3,4,5,6,7,8,9,10, 11, 12 (buat sebagai latihan ) Pohon Biner Terurut (Binary Search Tree) Pohon biner terurut P memenuhi sifat : • Semua simpul subpohon kiri selalu < dari Info(P) • Semua simpul subpohon kiri selalu > dari Info(P) Untuk simpul yang sama nilainya : disimpan berapa kali muncul. Maka sebuah node P akan menyimpan informasi : Info(P), Left(P), Right(P) , Count(P) yaitu banyaknya kemunculan Info(P). procedure InsSearchTree (input X : infotype, input/output P : BinTree) { Menambahkan sebuah node X ke pohon biner pencarian P } { infotype terdiri dari key dan count. Key menunjukkan nilai unik, dan Count berapa kali muncul } { Basis : Pohon kosong } { Rekurens : Jika pohon tidak kosong, insert ke anak kiri jika nilai < info(Akar) } { atau insert ke anak kanan jika nilai > info(Akar) } { Perhatikan bahwa insert selalu menjadi daun terkiri/terkanan dari subpohon } { Alokasi selalu berhasil } KAMUS LOKAL ALGORITMA if (IsEmpty(P)) then {Basis: buat hanya akar } MakeTree(X,nil,nil,P) else {Rekurens } depend on X, Key(P) X = Akar(P) : Count(P) ← Count(P) + 1 X < Akar(P) : InsSearchTree(X,Left(P)) X > Akar(P) : InsSearchTree(X,Right(P)) procedure DelBinSearchTree (input/output P : BinTree, input X : infotype) { Menghapus simpul bernilai Key(P)=X } { infotype terdiri dari key dan count. Key menunjukkan nilai unik, dan Count berapa kali muncul } { Basis : Pohon kosong } { Rekurens : } KAMUS LOKAL q : address procedure DelNode (input/output P : BinTree) ALGORITMA depend on X, Key(P) X < Akar(P) : DelBTree(Left(P),X) X > Akar(P) : DelBTree(Right(P),X) X =...
View Full Document

This document was uploaded on 03/15/2014 for the course IF 2030 at Institut Teknologi Bandung.

Ask a homework question - tutors are online