Anda di halaman 1dari 60

DATA ALGORITMA dan STRUKTUR

Struktur Data Pohon


Definisi

Struktur data terdiri dari root, dan sub pohon dalam susunan hierarkis.

Suatu bentuk struktur data non-linear

2 01/03/2020 Algoritma dan Struktur Data


Definisi

Biasanya digunakan untuk menggambarkan, hubungan data hierarkis , seperti :

- struktur organisasi
- pohon klasifikasi / silsilah
- sintaksis pohon / ekspresi pohon

3
Contoh

Struktur organisasi
- Pohon keluarga

- Pohon turnamen

4
Contoh

Struktur organisasi

Ekspresi aritmatika
Contoh: (4 + 3 * 7) - (5 / (3 + 4) +6

5
Contoh

Struktur organisasi

Ekspresi aritmatika

Pohon Keputusan

6
Terminologi Pohon

Daun
Koneksi antar node
- (orang tua, anak, saudara kandung)

Tingkat
Gelar
Tinggi dan kedalaman

Hutan Leluhur dan Keturunan

7
Terminologi Pohon
Pohon adalah koleksi banyak node

Setiap node mungkin memiliki 0 atau lebih penerus

Setiap node memiliki tepat satu pendahulu


- kecuali simpul puncak ( akar)

Akar adalah simpul teratas di pohon

Tautan yang menghubungkan sebuah simpul ke penerusnya disebut cabang / tepi

8
Terminologi Pohon
Penerus suatu node disebut anak-anak ( child) Predecessor of a

node disebut induk

Node dengan induk yang sama disebut saudara kandung

Node tanpa anak dipanggil daun / simpul eksternal

Jumlah anak / sub pohon dari suatu simpul disebut gelar

9
Terminologi Pohon
Keturunan adalah daftar semua anak / penerus daun

Leluhur adalah daftar pendahulu / dari induk ke root

Itu tingkat dari sebuah node didefinisikan oleh 1 + jumlah koneksi antara node dan root.

10
Terminologi Pohon
Itu tinggi dari a pohon adalah jumlah tepi pada jalur ke bawah terpanjang antara akar
dan daun.

Itu tinggi dari a simpul adalah jumlah tepi pada jalur ke bawah terpanjang antara
simpul dan daun itu.

Itu kedalaman simpul adalah jumlah tepi dari simpul ke simpul akar pohon

11
Terminologi
Derajat = 2

Akar
Derajat = 3

Node / Vertex

Derajat = 0

12
Latihan tentang Terminologi Pohon
Akar =
Saudara C =
Induk F =
Anak B =
Daun =
Node Internal = Level E
=
Tinggi pohon =
Gelar B =
Leluhur I =
Keturunan B =

13
Latihan tentang Terminologi Pohon
Buat pohon itu

Kumpulan Data: {A, X, W, H, B, E, S}

Root: A

Leluhur S: {E, A}

{X, W, E} adalah saudara kandung

{H, B} adalah turunan dan keduanya adalah anak-anak dari W

14
Pertanyaan?
Notasi Pohon / Pohon yang Mewakili
Notasi Diagram Pohon
- Diagram simpul-tautan klasik

Notasi Diagram Venn


- Kumpulan bersarang / Peta Pohon

Notasi Bracket
- Kurung Bersarang

Notasi Level
- Garis besar / tampilan pohon

16
Notasi Diagram Pohon

17
Notasi Diagram Venn

18
Notasi Bracket

19
Notasi Level

20
Latihan pada Notasi Pohon
Buat pohon di Venn Diagram, Bracket, dan notasi level

Y
R S

Q
T WU Z

P
M. N

21
Pertanyaan?
Struktur Data Pohon Biner

23
Pohon Biner
Struktur Data Pohon dengan anak maksimum (derajat) 2, yang disebut sebagai kiri anak dan Baik
anak.

24
Properti Pohon Biner

Jumlah node n pohon biner penuh adalah


- Paling sedikit :

- Paling banyak :

- Dimana h adalah ketinggian pohon

Node Maksimum untuk setiap level = 2 n

25
Jenis Pohon Biner
Pohon Biner Penuh

Pohon Biner Lengkap

Pohon Biner miring

26
Pohon Biner Penuh
Sebuah pohon di mana setiap simpul selain daun memiliki dua anak
- kadang-kadang disebut pohon biner yang tepat atau 2-pohon

27
Pohon Biner Lengkap
pohon biner di mana setiap level, kecuali mungkin yang terakhir, terisi penuh, dan
semua node berada sejauh mungkin

SEBUAH SEBUAH SEBUAH SEBUAH SEBUAH

B B C B C B C

D DE

28
Pohon miring
Binary Tree dengan cabang yang tidak seimbang antara cabang kiri dan kanan

29
ADT Binary Tree
Representasi Array

Representasi daftar tertaut

Indo nilai

1 A

2 B

3 C

4D5

6 F

7G

30
Representasi Array
jika sebuah node memiliki indeks saya, anak-anaknya ditemukan di indeks:
- Anak kiri: 2i +1

- Anak yang tepat: 2i + 2

sedangkan induknya (jika ada) ditemukan di indeks • − 1


2
- (dengan asumsi root memiliki indeks nol)

31
Representasi Array
Masalah:

1 2 3 4 5 6 7 8… 16

AB -C - - - D… E

- Ruang limbah

- Masalah penyisipan / penghapusan

Representasi Array baik untuk jenis Pohon


Biner Lengkap

- Binary Heap Tree

32
Representasi Daftar Tertaut

Ketik infotipe: integer Jenis alamat: pointer


ke Node kiri Info Baik

Ketik Node <


info: infotype left:
address right:
address
> Ketik BinTree: alamat

Kamus
root: BinTree

33
Binary Tree: Buat Node Baru
fungsi createNode (x: infotype): address
Algoritma
mengalokasikan (N)
info (N) • x kiri (N) • Tidak
tepat (N) • Batal

• N

34
Contoh Aplikasi Pohon Biner
Pohon Ekspresi Aritmatika

Pohon Pencarian Biner

Pohon Keputusan

AVL Tree

Antrian Prioritas
- Binary Heap Tree

35
Pohon Ekspresi Aritmatika
Aplikasi spesifik pohon biner untuk mengevaluasi ekspresi tertentu

Contoh:
- (ab) / ((c + d) * e)

36
Latihan - buat pohon
(a + b) / (c - d * e) + f + g * h / i

((A + B) * (C + D)) / (E + F * H)

(6 - (12 - (3 + 7))) / ((1 + 0) + 2)


* (2 * (3 + 1))

37
Pohon Pencarian Biner
Pohon biner dipesan / disortir
- Setiap node internal menyimpan kunci

- dua sub-pohon terkemuka

kunci di setiap node harus:


- lebih besar dari semua kunci yang disimpan di sub-pohon kiri

- dan lebih kecil dari semua kunci di sub-pohon kanan

38
Binary Search Tree: Masukkan Node baru
Prosedur insertBST (i: x: infotype, i / o: N: BinTree)
Algoritma
jika (N = Nihil) kemudian
N • createNode (x)
lain
jika (info (N)> x) kemudian
insertBST (x, kiri (N))
lain jika (info (N) <x) kemudian
insertBST (x, kanan (N))
lain
output ('duplikat')

39
Binary Search Tree: Cari Node
Fungsi findNode (i: x: infotype, i / o: N: BinTree): alamat
Algoritma
jika (info (N) = x) atau (N = Nil) kemudian
• N
lain
jika (info (N)> x) kemudian
findNode (x, kiri (N))
lain jika (info (N) <x) kemudian
findNode (x, kanan (N))

40
Binary Search Tree: Hapus Node
Hapus simpul P - Logika:
- P tidak punya anak: hapus P

- P memiliki 1 anak: ganti P dengan anaknya


- P memiliki 2 anak:
• Temukan Q di mana Q berada:
- Anak paling kiri dari sub-pohon kanan (penerus P) atau

- Anak paling kanan dari sub-pohon kiri (pendahulu P)

• Ganti P dengan Q

41
Binary Search Tree: Hapus Node
Fungsi delMostRight (P: alamat, Q: alamat) • alamat
Algoritma
sementara (kanan (Q) <> NULL) melakukan
Q • info right (Q) (P) • info (Q) kiri (P) • deleteBST
(kiri (P), info (Q))

• P

Fungsi delMostLeft (P: alamat, Q: alamat) • alamat


Algoritma
sementara (kiri (Q) <> NULL) melakukan
Q • info kiri (Q) (P) • info (Q) benar (P) • deleteBST
(kanan (P), info (Q))

• P

42
Binary Search Tree: Hapus Node
Fungsi deleteBST (P: address, x: infotype) -> address
Kamus
Fungsi delMostRight (P: alamat, Q: alamat) • alamat
Fungsi delMostLeft (P: alamat, Q: alamat) • alamat
Algoritma
jika (P = NULL) kemudian
• P
jika (x <info (P)) kemudian
kiri (P) • deleteBST (kiri (P), x)
lain jika (x> info (P)) kemudian
kanan (P) • deleteBST (kanan (P), x)
lain
jika (kiri (P) <> NULL) kemudian
P • delMostRight (P, kiri (P))
lain jika (kanan (P) <> NULL) kemudian
P • delMostLeft (P, kanan (P))
lain
hapus P.
• BATAL
• P

43
Pertanyaan?
Traversal di Binary Tree
Traversal DFS
- Pesan terlebih dahulu

- Dalam urutan

- Post-order

BFS traversal
- Tingkat-urutan

45
Pre-order Traversal
Pencarian Pertama Deep

Akar • Kiri • Baik


- Notasi awalan

Hasil:
- FBADCEGIH

46
Pre-order Traversal
Prosedur preOrder (i / o root: tree) Algoritma

if (root! = null) lalu


output (info (root)) preOrder (kiri
(root)) preOrder (kanan (root))

47
In-order Traversal
Kiri • Akar • Baik
- Notasi infiks

Hasil:
- ABCDEFGHI

48
In-order Traversal
Prosedur inOrder (i / o root: tree) Algoritma

if (root! = null) lalu


output inOrder (kiri (root)) (info
(root)) inOrder (kanan (root))

49
Traversal Pasca Pesanan
Kiri • Baik • Akar
- Notasi postfix

Hasil:
- ACEDBHIGF

50
Traversal Pasca Pesanan
Prosedur postOrder (i / o root: tree) Algoritma

if (root! = null) lalu


postOrder (kiri (root)) output
postOrder (kanan (root)) (info (root))

51
Level-order Traversal
Luasnya Pencarian Pertama

secara rekursif di setiap node

Hasil:
- FBGADICEH

52
Level-order Traversal
Prosedur levelOrder (root: tree) Kamus

T: Algoritma
Antrian
enqueue (Q, root) while (bukan
isEmpty (Q))
n • output dequeue (Q) (n)

enqueue (anak (n))

53
Latihan - tulis traversal - 1

54
Latihan - tulis traversal - 2

55
Latihan - tulis traversal - 3

56
Latihan - tulis traversal - 4

57
Latihan - Buat Pohon
Asumsikan ada SATU pohon, yang jika dilalui oleh Inorder menghasilkan: EACKFHDBG, dan
ketika dilintasi oleh Preorder yang dihasilkan: FAEKCDHGB

Gambar pohon yang memenuhi kondisi di atas

58
Pertanyaan?
60

Anda mungkin juga menyukai