TREE. Definisi. Istilah-istilah Umum dalam Tree

dokumen-dokumen yang mirip
DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II

BAB IV POHON. Diktat Algoritma dan Struktur Data 2

ALGORITMA DAN STRUKTUR DATA

Tree. Perhatikan pula contoh tree di bawah ini : Level. Level 2. Level 3. Level 4. Level 5

BAB IX TREE (POHON) ISTILAH DASAR

MODUL PRAKTIKUM STRUKTUR DATA

Ringkasan mengenai Tree (Dari beberapa referensi lain) Nina Valentika

TREE ALGORITMA & STRUKTUR DATA. Materi ASD Fakultas Teknik Elektro & Komputer UKSW ( Download Dari :

A B C E F G K Contoh Tree

TREE STRUCTURE (Struktur Pohon)

Struktur Data Tree/Pohon dalam Bahasa Java

Syarif Abdullah (G )

BAB XI Manipulasi Binary Tree

JAWABAN TUGAS MATRIKULASI STRUKTUR DATA. DOSEN Bpk. Krisna Adiyarta, M.Sc

Algoritma dan Struktur Data. Click to edit Master subtitle style Konsep Tree

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

6. TREE / BINARY TREE

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 10 & 11

STRUKTUR POHON & KUNJUNGAN POHON BINER

IT234 Algoritma dan Struktur Data. Tree

DEFINISI. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon 2

Algoritma dan Struktur Data. Linear & Binary Search Tree

Algoritma dan Struktur Data. Binary Tree & Binary Search Tree (BST)

Pohon dan Pohon Biner

B C D E F G H I J K L M N O P Q R S T. Tinaliah, S.Kom POHON BINER

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

Tree (Struktur Data) Nisa ul Hafidhoh, MT

Pohon. Bahan Kuliah IF2120 Matematika Diskrit. Program Studi Teknik Informatika ITB. Rinaldi M/IF2120 Matdis 1

Tenia Wahyuningrum, S.Kom. MT Sisilia Thya Safitri, S.T.,M.T.

Definisi. Pohon adalah graf tak-berarah, terhubung, dan tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon (ada sikuit) (tdk terhubung)

Pohon Biner (Bagian 1)

Soal Pendahuluan Modul 3

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

Pohon (TREE) Matematika Deskrit. Hasanuddin Sirait, MT 1

STRUKTUR POHON (TREE) Pohon atau Tree adalah salah satu bentuk Graph terhubung yang tidak mengandung sirkuit.

Matematika Diskret (Pohon) Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

13/12/2013. Binary Tree. Contoh Tree

MAKALAH DESAIN DAN ANALISIS ALGORITMA BINARY TREE DISUSUN OLEH : 1. Nadim Achmad ( ) 2. Dzurratul Ulya ( )

STRUKTUR POHON (TREE) Pohon atau Tree adalah salah satu bentuk Graph terhubung yang tidak mengandung sirkuit.

METODE AVL TREE UNTUK PENYEIMBANGAN TINGGI BINARY TREE

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

Pemodelan dan Pengelolaan Data Klasifikasi Tanaman Menggunakan Pohon

Algoritma dan Struktur Data. Tree

Politeknik Elektronika Negeri Surabaya

Pemrograman Algoritma Dan Struktur Data

Implementasi Skema Pohon Biner yang Persistent dalam Pemrograman Fungsional

ANALISIS ALGORITMA BINARY SEARCH

Silsilah keluarga Hasil pertandingan yang berbentuk turnamen Struktur organisasi dari sebuah perusahaan. B.1 Pohon Biner (Binary Tree)

Pohon Biner. Tim Pengajar IF2030 Semester I/ /8/2009 FNA/IF2030/Sem

Buku Ajar Struktur Data

Variasi Pohon Pencarian Biner Seimbang

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

BINARY SEARCH TREE. TUJUAN UMUM Mahasiswa memahami binary search Tree

Pertemuan 9 STRUKTUR POHON (TREE) Sifat utama Pohon Berakar ISTILAH-ISTILAH DASAR

Definisi. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon

BAB VII POHON BINAR POHON

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

Lecture Notes On Algorithms and Data Structures. Oleh Thompson Susabda Ngoen

KUM 6 IMPLEMENTASI BINARY TREE

Termilogi Pada Pohon Berakar 10 Pohon Berakar Terurut

Update 2012 DESAIN DAN ANALISIS ALGORITMA SEARCHING

OPERASI LOGIKA PADA GENERAL TREE MENGGUNAKAN FUNGSI REKURSIF

MODUL PRAKTIKUM STRUKTUR DATA

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

A. TUJUAN Mahasiswa diharapkan mampu : 1. Memahami Konsep Binary Search Tree 2. Mengimplementasaikan Binary Search Tree

Kecerdasan Buatan. Penyelesaian Masalah dengan Pencarian... Pertemuan 02. Husni

Politeknik Elektronika Negeri Surabaya

Outline. Struktur Data & Algoritme (Data Structures & Algorithms) Pengantar. Definisi. 2-3 Trees

Pohon Biner dan Aplikasinya

Struktur dan Organisasi Data 2 POHON BINAR

TUGAS MAKALAH INDIVIDUAL. Mata Kuliah : Matematika Diskrit / IF2153 Nama : Dwitiyo Abhirama NIM :

HEAP. Heap dan Operasinya. Oleh Andri Heryandi

Struktur Data & Algoritma

Pertemuan 15 REVIEW & QUIS

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA UNIVERSITAS NASIONAL

Tipe Rekursif: POHON (TREE)

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

ALGORITMA PENCARIAN (1)

Kecerdasan Buatan Penyelesaian Masalah dengan Pencarian

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Koleksi Hirarkis Tree

Struktur Data & Algoritma

BAB VI SEARCHING (PENCARIAN)

8/29/2014. Kode MK/ Nama MK. Matematika Diskrit 2 8/29/2014

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

ALGORITMA & PEMROGRAMAN

BFS dan DFS. Bahan Kuliah IF2151 Strategi Algoritmik. Oleh: Rinaldi Munir

BAB 7 POHON BINAR R S U

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Penerapan BFS dan DFS pada Pencarian Solusi

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

Struktur Data dan Algoritma

(Binary) Heap. Binary tree yang menyimpan pasangan prioritas (atau prioritas elemen) pada node Property Heap :

Transkripsi:

TREE Definisi Merupakan salah satu bentuk struktur data non-linear yang menggambarkan hubungan yang bersifat hirarkis antara elemen-elemen. Tree dapat juga didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut root dan node lainnya yang terbagi lagi menjadi himpunan-himpunan yang disebut subtree. Istilah-istilah Umum dalam Tree a. Predecessor : node yang berada di atas node tertentu b. Successor : node yang berada di bawah node tertentu. c. ncestor : seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama. d. Descant : seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang sama. e. Father : predecessor satu level di atas suatu node. f. Son : successor satu level di bawah suatu node. g. Sibling : node-node yang memiliki father yang sama dengan suatu node. h. Subtree : bagian dari tree yang berupa suatu node beserta descantnya dan memiliki semua karakteristik dari tree tersebut. i. Size : anyaknya node dalam suatu tree. j. Height : anyaknya tingkatan/level dalam suatu tree. k. Root : Satu-satunya node khusus dalam tree yang tak punya predecessor. l. Leaf : Node-node dalam tree yang tak memiliki successor. m. Degree : anyaknya son yang dimiliki suatu node. Pusat Pengembangan Pidikan Universitas Gadjah Mada 1

Contoh : Subtree Root Keterangan : ncestor (H) = F,C, Descant (F) = H,I C Father (D) = Son () =,C Sibling (D) = E D E F Size = 9 Height = 4 G H Root = I Leaf = D,G,H,I Degree (E) = 1 Gambar 1, inary Tree eberapa Jenis Tree 1. inary Tree inary Tree adalah tree dengan syarat bahwa setiap node hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah. Dengan demikian, maka setiap node dalam binary tree hanya boleh memiliki paling banyak dua son (perhatikan gambar 1). Jika adalah root dari suatu binary tree, maka dikatakan left son dari dan C dikatakan right son dari. Kemudian dikatakan father dari dan C. Sebuah node yang tidak memiliki son (seperti D, G, H, atau I pada gambar 1) dinamakan leaf. Node n1 adalah ancestor dari node n2 (dan n2 adalah descant dari n1) jika n1 adalah father dari n2 atau father dari beberapa ancestor n2. Seperti contoh pada gambar 1, adalah ancestor dari G, dan H adalah descant dari C, tapi E bukan ancestor maupun descant dari C. Node n2 adalah left descant dari node n1 jika n2 juga left son dari n1 atau descant dari left son n1, begitu sebaliknya untuk right descant. Dua node dikatakan brothers jika masing-masing node adalah left dan right son dari father yang sama. Meskipun sebuah tree (pohon) yang sesungguhnya tumbuh dengan root (akar) di dalam tanah dan dengan leaf (daun) di udara, namun dalam ilmu komputer secara umum melukiskan struktur data tree dengan root di atas dan leaf Pusat Pengembangan Pidikan Universitas Gadjah Mada 2

di bagian bawah. rah dari root menuju leaf disebut down dan sebaliknya disebut up. Perpindahan dari leaf menuju root dinamakan climbing, sedangkan perpindahan dari root menuju leaf dinamakan descing. Jika setiap node dalam binary tree selalu terdapat left dan right subtree, maka tree yang demikian dikatakan sebagai strictly binary tree seperti contoh pada gambar 2, sementara gambar 1 tidak dapat dikatakan sebagai strictly binary tree karena node C dan E masing-masing hanya memiliki satu son. C D E F G Gambar 2, Strictly inary Tree. Sebuah strictly binary tree dengan n leaf selalu terdapat 2n 1 node. Perhatikan gambar 2, terdapat n = 4 leaf. Sehingga terdapat sebanyak (2 * 4) - 1 = 7 node. Level dari suatu node dalam binary tree didefinisikan dengan mengikuti suatu aturan bahwa : root dari sebuah tree berada pada level 0, kemudian level dibawahnya adalah level 1, dan seterusnya. Sebagai contoh, pada binary tree yang terdapat dalam gambar 2, adalah root dan berada pada level 0, dan C berada pada level 1, D dan E berada pada level 2, F dan G berada pada level 2. Depth (kedalaman) dari binary tree adalah level maksimum dari beberapa leaf di dalam tree. Jika suatu binary tree pada setiap nodenya (kecuali leaf) memiliki dua son, dan setiap subtree memiliki panjang path yang sama, maka yang demikian dikatakan sebagai complete binary tree (perhatikan gambar 3). Jika pada complete binary tree terdapat n node pada level l, kemudian depth binary tree adalah d, secara matematis dapat dirumuskan sebagai berikut : Pusat Pengembangan Pidikan Universitas Gadjah Mada 3

tn 2 0 2 1 2 2... 2 d d j 0 2 j dimana, tn mewakili total jumlah node, d mewakili depth suatu binary tree. C D E F G H I J K L M N O Gambar 3, Complete inary Tree. 2. inary Search Tree inary Search Tree adalah binary tree dengan sifat bahwa semua left son harus lebih kecil daripada right son dan fathernya. inary search tree dibuat untuk mengatasi kelemahan pada binary tree biasa, yaitu kesulitan dalam searching/pencarian node tertentu dalam binary tree. 2.1. Operasi-operasi pada inary Search Tree a. Melakukan setup sebuah tree yang kosong. b. Melakukan pengujian apakah sebuah tree kosong. c. Menambahkan node baru. d. Traverse, yaitu mengunjungi seluruh node pada tree, masing-masing sekali. da tiga cara traverse, yaitu : PreOrder, InOrder dan PostOrder e. Melakukan pencarian node dengan kunci pencarian node yang spesifik. f. Menghapus node yang telah dibuat. g. Melakukan akses pada node yang ditunjuk secara spesifik. Pusat Pengembangan Pidikan Universitas Gadjah Mada 4

Melakukan setup sebuah tree yang kosong, melakukan pengujian apakah sebuah tree kosong, dan menambahkan/menyisipkan node baru. { Deklarasi inary Tree } type NodePtr = ^NodeRec; NodeRec = record value : integer; left, right : NodePtr; var root : NodePtr; value left right Program 1, Deklarasi inary Tree { Insert Tree } procedure InsertTree(X:integer; Var StartNode : NodePtr); var NewEntry : NodePtr; if (StartNode=nil) then new(newentry); NewEntry^.value := X; NewEntry^.left := nil; NewEntry^.right := nil; StartNode := NewEntry; if (X < StartNode^.value) then InsertTree(X, StartNode^.left) InsertTree(X, StartNode^.right); Program 2, Procedure untuk menambah item/node kedalam binary tree. { Print Tree } procedure PrintTree(StartNode : NodePtr); if (StartNode<>nil) then PrintTree(StartNode^.left); writeln(startnode^.value); PrintTree(StartNode^.right); Program 3, Procedure untuk mencetak binary tree Pusat Pengembangan Pidikan Universitas Gadjah Mada 5

Traverse, yaitu mengunjungi seluruh node pada tree, secara PreOrder, InOrder dan PostOrder. PreOrder : cetak isi node yang dikunjungi, kunjungi left son, kunjungi right son. InOrder : kunjungi left son, cetak isi node yang dikunjungi, kunjungi right son. PostOrder : kunjungi left son, kunjungi right son, cetak isi node yang dikunjungi. { PreOrder } procedure PreOrder(Tree : NodePtr); if Tree<>nil then write(tree^.value); PreOrder(Tree^.left); PreOrder(Tree^.right); Program 4, Procedure untuk melakukan kunjungan secara PreOrder. { InOrder } procedure InOrder(Tree : NodePtr); if Tree<>nil then InOrder(Tree^.left); write(tree^.value); InOrder(Tree^.right); Program 5, Procedure untuk melakukan kunjungan secara InOrder. { PostOrder } procedure PostOrder(Tree : NodePtr; if Tree<>nil then PostOrder(Tree^.left); PostOrder(Tree^.right); write(tree^.value); Program 6, Procedure untuk melakukan kunjungan secara PostOrder. Pusat Pengembangan Pidikan Universitas Gadjah Mada 6

Jika pelaksanaan InOrder dan PreOrder diketahui, maka binary tree bisa ditentukan, sehingga kunjungan secara PostOrder juga bisa ditentukan. Contoh 1 : jika diketahui PreOrder dan InOrder PreOrder D G C E H I F InOrder D G H E I C F C D E F G H I Gambar 4, inary tree dan cara melakukan kunjungan PostOrder G D H I E F C Contoh 2 : jika diketahui InOrder dan PreOrder InOrder 10 20 30 40 50 60 70 80 90 PreOrder 50 20 10 40 30 60 80 70 90 50 20 60 10 40 80 30 70 90 Gambar 5, inary tree dan cara melakukan kunjungan PostOrder 10 30 40 20 70 90 80 60 50 Pusat Pengembangan Pidikan Universitas Gadjah Mada 7

Contoh 3 : jika diketahui InOrder dan PostOrder InOrder R T U S P PostOrder R T U S P T P R S U Gambar 6, inary tree dan cara melakukan kunjungan PreOrder T R P S U Contoh 4 : jika diketahui InOrder dan PostOrder InOrder F H D E I G C PostOrder H F D I G E C C D E F G H I Gambar 7, inary tree dan cara melakukan kunjungan PreOrder D F H C E G I Jika diketahui secara PreOrder dan PostOrder ternyata binary tree tidak tunggal, sehingga sulit ditentukan. Pusat Pengembangan Pidikan Universitas Gadjah Mada 8

Melakukan pencarian node dengan kunci pencarian node yang spesifik. { Search Tree } procedure SearchTree(x : integer; var Entry : NodePtr; var Found : boolean); Found := false; Entry := Root; while (not Found) and (Entry<>nil) do if (Entry^.value=x) then Found := true if (x<entry^.value) then Entry := Entry^.left Entry := Entry^.right Program 7, Searching pada inary Tree { Find Position } procedure FindPosition(x: integer; var Entry : NodePtr; var Father : NodePtr; var Found : boolean); Found := false; Entry := Root; Father := nil; while (not Found) and (Entry <> nil) do if (Entry^.value=x) then Found := true Father := Entry; If (x<entry^.value) then Entry := Entry^.left Entry := Entry^.right Program 8, Searching pada inary Tree untuk menentukan posisi father. Pusat Pengembangan Pidikan Universitas Gadjah Mada 9

Menghapus node yang telah dibuat. Menghapus node merupakan operasi yang sangat kompleks, karena ketika node dihapus dari sebuah tree, descant harus melakukan link kembali pada tree dengan posisi yang tepat. Untuk menghapus node, terlebih dahulu harus mengetahui father dari node. { Delete Tree } procedure DeleteEntry(var Entry, Father : NodePtr); var NewChild : NodePtr; if (Entry^.left=nil) then NewChild := Entry^.right; lterparent(father, Entry, NewChild) NewChild := Entry^.left; lterparent(father, Entry, NewChild) PromoteSuccessor(Entry) (a) procedure lterparent(var Father : NodePtr; Entry, NewChild : NodePtr); if (Father=nil) then Root := NewChild if (Father^.left=Entry) then Father^.left := NewChild Father^.right := NewChild (b) Pusat Pengembangan Pidikan Universitas Gadjah Mada 10

procedure PromoteSuccessor (var Entry : NodePtr); var Successor, SuccParent : NodePtr; Successor := Entry^.right; SuccParent := Entry; while (Successor^.left <> nil) do SuccParent := Successor; Successor := Successor^.left; if (SuccParent=Entry) then Entry^.right := Successor^.right Successor^.left := Successor^.right; Entry^.value := Successor^.value; (c) Program 9, (a) menghapus node pada binary tree, (b) memindahkan kedudukan father/parent (c) procedure untuk mapatkan successor pengganti. Pusat Pengembangan Pidikan Universitas Gadjah Mada 11