Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi...

75
Koleksi Hirarkis Tree Husni Didasarkan pada buku: Fundamentals of Python: From First Programs Through Data Structures

Transcript of Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi...

Page 1: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Koleksi Hirarkis Tree

Husni

Didasarkan pada buku:

Fundamentals of Python: From First Programs Through Data Structures

Page 2: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Okyektif

• Menjelaskan perbedaan antara pohon dan tipe koleksi lain menggunakan terminologi yang relevan

• Mengetahui penerapan pendekatan pohon umum dan pohon biner

• Mendeskripsikan perilaku & pemanfaatan pohon khusus seperti heap, BST dan pohon ekspresi

• Membandingkan kinerja operasi pohon pencarian biner dan heap

• Memanfaatkan algoritma rekursif untuk memroses pohon

2

Page 3: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Sekilas Tree (Pohon)

• Dalam suatu pohon, ide dari predecessor dansuccessor diganti dengan parent (induk) dan child(anak)

• Pohon mempunyai dua ciri utama:• Setiap item dapat mempunyai banyak anak

• Semua item, kecuali item khusus bernama root (akar), mempunyai dengan pasti satu induk

3

Page 4: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Terminologi Pohon

4

Istilah Definisi

Node Item yang disimpan di dalam pohon

Root = Akar Node paling atas di dalam pohon. Hanya ini node tanpa induk

Child = Anak Node tepat di bawah dan terhubung langsung ke suatu node yang diberikan. Node dapat mempunyai lebih dari satu anak dan anak-anaknya ditampilkan teratur dalam urutan kiri-ke-kanan. Anak paling kiri disebut anak pertama, anak paling kanan disebut anak terakhir.

Parent = Induk Node tepat di atas dan terhubung langsung ke node yang diberikan. Node hanya dapat mempunyai satu induk.

Sibling = Saudara Anak-anak dari induk yang sama.

Leaf = Daun Node yang tidak mempunyai anak.

Bersambung...

Page 5: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

5

Tree Terminology (continued)Istilah Definisi

Node Interior Node yang mempunyai setidaknya satu anak

Edge/Cabang/Link Garis yang menghubungkan induk ke anaknya

Descendant = Keturunan Anak-anak dari node, cucu-cucunya dst kebawah s.d daun-daunnya

Ancestor = Moyang Induk dari node, kakeknya, dst ke atas s.d Rootnya.

Path = Jalur/Jalan Rangkaian garis yang menghubungkan suatu node ke salah satu dari keturunannya.

Panjang Path Jumlah dari garis dalam suatu path

Kedalalam/Level Kedalaman dari node sama dengan panjang path yang menghubungkannya ke Root. Jadi level dari root = 0. Anaknya ada pada level 1 dst.

Tinggi Panjang path terpanjang dalam suatu pohon; berbeda dengan jumlah level maksimum antar daun di dalam pohon

Sub-Pohon Pohon yang dibentuk dari suatu node dan semua keturunannya

Page 6: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

6

Catatan:

Tinggi suatu pohon yang mengandung satu node adalah 0

maka tinggi pohon yang kosong adalah –1

Terminologi Pohon

Properti Nilai

Jumlah node 10

Tinggi 3

Node root H

Daun-daun A, C, J, L, M, N

Node-node Interior A, B, F, E

Node pada Level 2 A, C, J, E

Ancestor dari E F, H

Keturunan dari F J, E, L, M, N

Node dalam sub-pohon paling kanan dari F

E, L M, N

Page 7: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pohon Umum & Pohon Biner

• Pada pohon biner, setiap node mempunyai paling banyak dua anak:

• Anak kiri dan anak kanan

7

Page 8: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Definisi Rekursif dari Pohon

• Pohon umum dapat kosong atau terdiri dari sehimpunan terbatas node T

• Node r dinamakan root

• Himpunan T – {r} dipartisi ke dalam sub-himpunan, masing-masing juga pohon umum

• Pohon biner dapat kosong atau terdiri dari root ditambah sub-pohon kiri dan sub-pohon kanan, masing-masing juga pohon biner.

8

Page 9: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Mengapa Menggunakan Pohon

• Pohon uraian (parse) mendeskripsikan struktur sintaktis dari suatu kalimat, sesuai dengan aturan (tata bahasa) tertentu

9

Page 10: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Contoh Pohon Parsing

10

Page 11: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Contoh Pohon Parsing

11

Page 12: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Contoh Pohon Parsing

12

Page 13: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Contoh Pohon Parsing

13

Page 14: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Mengapa Menggunakan Pohon

• Struktur sistem file juga mirip pohon

14

Page 15: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Mengapa Menggunakan Pohon

• Koleksi terurut dapat pula direpresentasikan sebagai struktur mirip-pohon

• Dinamakan binary search tree (pohon pencarian biner), disingkat BST

• Mendukung pencarian & penyisipan logarithmic.

15

Page 16: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Bentuk Pohon Biner

• Dapat dideskripsikan secara lebih formal dengan penetapan relasi antara tingginya dan jumlah node yang dikandungnya

16

N node

Tinggi: N – 1

Pohon biner penuh berisi

jumlah maksimum node dari

node dengan tinggi H

Page 17: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Bentuk Pohon Biner

• Jumlah node, N, dari pohon biner lengkap dengan tinggi H adalah 2H + 1 – 1

• Tinggi, H, dari suatu pohon biner lengkap dengan N nodeadalah log2(N + 1) – 1

• Banyaknya kerja maksimum yang diperlukan untuk mengakses suatu node yang diberikan dalam pohon biner penuh adalah O(log N)

17

Tinggi Pohon Jumlah Node

0 1

1 3

2 7

3 15

Page 18: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Bentuk Pohon Biner

18

Page 19: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Aplikasi Pohon Biner

• Akan didiskusikan 3 penggunaan khusus dari pohon biner yang berbeda dalam hal penempatan node atau data di dalamnya:

• Heaps (Susunan, bukan Stack)

• Binary search trees (Pohon pencarian biner)

• Expression trees (Pohon ekspresi)

19

Page 20: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Heaps

• min-heap: nilai dari node lebih kecil atau sama dengan anak-anaknya

• max-heap: nilai node lebih besar dari anak-anaknya, berarti menempatkan node lebih besar lebih dekat ke root

• Heap property: constraint pada penempatan node-node• Heap sort membangun suatu heap dari data dan secara

berulang menghapus item root dan menambahkannya ke ujung dari list

• Heaps juga digunakan untuk implementasi antrian berprioritas20

Page 21: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Min-Heap Max-Heap

21

Page 22: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Operasi Heap: Sisip

• Menyisipkan nilai 15

• Letakkan 15 pada X. Melanggar properti heap, tukar dengan 8. diperoleh:

• Masih melanggar aturan, tugas lagi. Diperoleh valid max-heap.

22

Page 23: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Operasi Heap: Hapus

• Menghapus 11

• Hapus 11 dan ganti dengan 4. Melanggar? Tukar lagi!

23

Page 24: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pohon Pencarian Biner (BST)

• BST mengharuskan penempatan terurut node-nodenya

• Semua keturunan pada sub-pohon kiri lebih kecil dari nilai yang dipegang oleh node

• Semua keturunan pada sub-pohon kanan lebih besar dari nilai yang dipegang oleh node

• Ketika pendekatan membentuk pohon biber seimbang sempurna, pencarian dan penyisipan adalah O(log n) dalam kasus terburuk

• Tidak semua BST seimbang sempurna• Dalam kasus terburuk, menjadi linier dan mendukung

pencarian linier

24

Page 25: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pohon Pencarian Biner

25Path pencarian yang mungkin untuk pencarian biner dari list terurut

1 92 3 4 5 7 8

Page 26: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pohon Pencarian Biner

26

Page 27: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pohon Ekspresi

• Cara lain untuk memroses ekspresi adalah membangun pohon uraian selama penguraian

• Expression tree

• Pohon ekspresi tidak pernah kosong

• Node interior merepresentasikan suatu ekspresi gabungan, yang terdiri dari operator dan operannya

• Setiap daun merepresentasikan operan numerik

• Operator yang presedennya lebih tinggi biasanya hadir di dekat bawah pohon, kecuali diubah di dalam ekspresi sumber dengan tanda kurung

27

Page 28: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pohon Ekspresi

28

Page 29: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pohon Ekspresi

29

Page 30: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Penjelahan Pohon

• Ada 2 prinsip dasarnya:

• Breath first search (BFS): melebar terlebih dahulu

• Depth first search (DFS): mendalam terlebih dahulu

30

Page 31: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Ilustrasi BFS dan DFS

31

Page 32: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Penjelajahan Pohon Biner

• 4 tipe standard penjelajahan pohon biner: • Preorder traversal: Kunjungi node root, kemudian

jelajah sub-pohon kiri dan sub-pohon kanan dengan cara serupa

• Inorder traversal: Mengunjungi sub-pohon kiri, menghampiri node root dan menjelajahi sub-pohon kanan

• Cocok untuk pengunjungan item-item dalam suatu BST yang sudah terurut

• Postorder traversal: Menjelajah sub-pohon kiri, mendatangi sub-pohon kanan, dan mengunjungi node root

• Level order traversal: Dimulai dengan level 0, mengunjungi node-node pada setiap level dari urutan kiri-ke-kanan

32

Page 33: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

33

Penjelajahan Pohon Biner: Preorder

Page 34: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

34

Penjelajahan Pohon Biner: Inorder

Page 35: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

35

Penjelajahan Pohon Biner: Postorder

Page 36: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

36

Penjelajahan Pohon Biner: Urut Level

Page 37: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Tipe Data Abstrak (ADT) Pohon Biner: Class BinaryTree

• Menyediakan banyak operasi umum yang diperlukan untuk membangun jenis pohon khusus

• Mendukung operasi dasar untuk membuat pohon, menentukan jika suatu pohon kosong dan menjelajah pohon

• Membiarkan operasi yang fokus pada pengaksesan, penggantian atau penghapusan bagian-bagian komponen dari pohon biner yang tak-kosong: root, sub-pohon kiri dan sub-pohon kanan-nya

37

Page 38: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Operasi Pada ADT Pohon Biner

38

Page 39: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

39

Operasi Pada ADT Pohon Biner

Page 40: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pemrosesan Pohon Biner

• Banyak algoritma pemrosesan pohon biner mengikuti struktur rekursif pohon

• Programmer kadang tertarik pada frontier, yaitu himpunan node daun dari suatu tree

• Contoh: Frontier dari pohon uraian untuk kalimat English (seperti diperlihatkan sebelumnya)

40

def size(tree):if tree.isEmpty():return 0

else:return 1 + size(tree.getLeft()) +

size(tree.getRight())>>> size(d)7

Page 41: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pemrosesan Pohon Biner

• frontier meminta parameter pohon biner dan mengembalikan suatu list

• Dua kasus basis:

• Pohon kosong kembalikan list kosong

• Pohon suatu node daun kembalikan list yang mengandung item root

41

Page 42: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Imp

lem

enta

si P

oh

on

Bin

er

42

Page 43: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

43

Implementasi Pohon Biner

Page 44: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

44

Imp

lem

enta

si P

oh

on

Bin

er

Page 45: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

45

Implementasi Pohon Biner

Page 46: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Representasi String dari Pohon

• __str__ dapat diimplementasikan dengan penjelajahan tertentu

46

Page 47: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pengembangan Pohon Pencarian Biner

• BST mengharuskan penempatan khusus node-node dalam pohon biner untuk mendukung pencarian & penyisipan logaritmik

• Pohon biner dapat digunakan utuk mengembangkan suatu pohon pencarian biner.

47

Page 48: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Antarmuka Pohon Pencarian Biner

• Antarmuka bagi BST sebaiknya menyertakan konstruktor dan metode dasar untuk menguji kekosongan pohon, mengetahui jumlah item, menambahkan, menghapus dan mencari suatu item

• Metode lain yang berguna adalah __iter__ yang mengijinkan pengguna untuk menjelajah item-item di dalam BST dengan perulangan for.

48

Page 49: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Met

od

e d

alam

BST

49

Page 50: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Struktur Data untuk Implementasi BST

50

Page 51: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pencarian Dalam BST

• find mengembalikan item pertama yang cocok jika item target ditemukan di dalam pohon; jika tidak mengembalikan None.

• Strategi rekursif dapat digunakan

• Algoritma pseudocode:if tree is empty

return Noneelse if the target item equals the root item

return the root itemelse if the target item is less than the root item

return the result of searching the left subtreeelse

return the result of searching the right subtree

51

Page 52: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Pencarian Dalam BST

52

Page 53: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Penyisipan Item Ke dalam BST

• add menyisipkan suatu item dalam tempat yang tepat di dalam BST

• Tempat tepat bagi item adalah salah satu dari tiga posisi berikut

1. Node root, jika pohon sudah kosong2. Node dalam sub-pohon kiri dari node aktif, jika item

baru kurang dari item dalam node aktif3. Node dalam sub-pohon kanan dari node aktif, jika item

baru lebih besar atau sama dengan item dalam node aktif

• Untuk opsi 2 dan 3, add menggunakan fungsi bantuan rekursif bernama addHelper

• Pada semua kasus, suatu item ditambahkan sebagai node daun

53

Page 54: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Peny

isip

an It

em K

e d

alam

BST

54

Page 55: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Menghapus Item dari BST

• Simpan referensi ke node root

• Cari node yang akan dihapus, induknya dan referensi induknya ke node ini

• Jika item tidak ada di dalam pohon, kembalikan None

• Jika tidak, jika node mempunyai anak kiri atau kanan, ganti nilai node dengan nilai terbesar dalam sub-pohon kiri dan hapus node nilai itu dari sub-pohon kiri

• Jika tidak, set referensi induk ke node ke hanya anak node

• Reset node root ke referensi tersimpan

• Turunkan ukuran (size) dan kembalikan item

55

Page 56: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Menghapus Item dari BST

• Langkah ke-4 sangat kompleks: dapat difaktorkan ke dalam fungsi bantuan yang mengambil node untuk dihapus sebagai parameter (node yang mengandung item untuk dihapus dirujuk sebagai node puncak):

• Search top node’s left subtree for node containing the largest item (rightmost node of the subtree)

• Replace top node’s value with the item

• If top node’s left child contained the largest item, set top node’s left child to its left child’s left child

• Otherwise, set parent node’s right child to that right child’s left child

56

Page 57: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Analisa Kompleksitas dari BST

• BSTs are set up with intent of replicating O(log n) behavior for the binary search of a sorted list

• A BST can also provide fast insertions

• Optimal behavior depends on height of tree• A perfectly balanced tree supports logarithmic searches

• Worst case (items are inserted in sorted order): tree’s height is linear, as is its search behavior

• Insertions in random order result in a tree with close-to-optimal search behavior

57

Page 58: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Studi Kasus: Pohon Parsing & Ekspresi

• Request:• Write a program that uses an expression tree to

evaluate expressions or convert them to alternative forms

• Analysis:• Like the parser developed in Chapter 17, current

program parses an input expression and prints syntax error messages if errors occur

• If expression is syntactically correct, program prints its value and its prefix, infix, and postfix representations

58

Page 59: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

59

Studi Kasus: Pohon Parsing & Ekspresi

Page 60: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

60

Studi Kasus: Pohon Parsing & EkspresiKelas-kelas untuk Sistem Parsing

Page 61: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Studi Kasus: Pohon Parsing & Ekspresi

• Rancangan dan implementasi dari kelas Node

61

Page 62: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

62

Studi Kasus: Pohon Parsing & Ekspresi

Page 63: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

63

Studi Kasus: Pohon Parsing & Ekspresi

Page 64: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Studi Kasus: Pohon Parsing & Ekspresi

• Rancangan & implementasi dari kelas Parser:• Paling mudah untuk membangun pohon ekspresi

dengan suatu parser yang menggunakan strategi recursive descent

• Borrow parser from Chapter 17 and modify it

• parse akan mengembalikan suatu pohon ekspresi ke pemanggilnya, yang menggunakan pohon itu untuk memperoleh informasi mengenai ekspresi tersebut

• factor memproses bilangan atau ekspresi bersarang di dalam tanda kurung

• Panggil expression untuk mengurai ekspresi bersarang

64

Page 65: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

65

Studi Kasus: Pohon Parsing & Ekspresi

Page 66: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

66

Studi Kasus: Pohon Parsing & Ekspresi

Page 67: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Implementasi Array dari Pohon Biner

• An array-based implementation of a binary tree is difficult to define and practical only in some cases

• For complete binary trees, there is an elegant and efficient array-based representation

• Elemen-elemen disimpan berdasarkan level

• The array representation of a binary tree is pretty rare and is used mainly to implement a heap

67

Page 68: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

68

Implementasi Array dari Pohon Biner

Representasi array dari pohon biner lengkap:

Pohon Biner Lengkap

Page 69: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

69

Implementasi Array dari Pohon Biner

Lokasi dari item yang diberikan dalam representasi array

dari pohon biner lengkap:

Page 70: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

70

Implementasi Array dari Pohon Biner

Relatif dari item “d” di dalam representasi array dari suatu

pohon biner lengkap

Page 71: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Impementasi Heaps

71

Metode dalam antarmuka Heaps:

Page 72: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Impementasi Heaps

• At most, log2n comparisons must be made to walk up the tree from the bottom, so add is O(log n)

• Method may trigger a doubling in the array size• O(n), but amortized over all additions, it is O(1)

72

Page 73: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Heap untuk Implementasi Antrian Prioritas

• Antrian prioritas dapat diimplementasikan dengan linked list terurut; dapat pula menggunakan heap

73

Page 74: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Rangkuman

• Pohon merupakan koleksi hirarkis• The topmost node in a tree is called its root

• In a general tree, each node below the root has at most one parent node, and zero child nodes

• Nodes without children are called leaves

• Nodes that have children are called interior nodes

• The root of a tree is at level 0

• Dalam pohon biner, node mempunyai paling banyak 2 anak

• A complete binary tree fills each level of nodes before moving to next level; a full binary tree includes all the possible nodes at each level 74

Page 75: Koleksi Hirarkis Tree - Komputasi · PDF file•Heaps juga digunakan untuk implementasi antrian berprioritas 20. Min-Heap Max-Heap 21. Operasi Heap: Sisip •Menyisipkan nilai 15

Rangkuman

• 4 penjelajahan pohon standar: Preorder, inorder, postorder dan level order

• Pohon ekspresi: Type of binary tree in which the interior nodes contain operators and the successor nodes contain their operands

• Pohon pencarian biner: Nonempty left subtree has data < datum in its parent node and a nonempty right subtree has data > datum in its parent node

• Logarithmic searches/insertions if close to complete

• Heap: Binary tree in which smaller data items are located near root

75