tipe rekursif: pohon (tree) - welcome to udinus repository...
TRANSCRIPT
![Page 1: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/1.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 12009/9/8 IF2030/Sem. 1 2009-2010 1
Tipe Rekursif:POHON (TREE)
Tim Pengajar IF2030
![Page 2: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/2.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 22009/9/8 IF2030/Sem. 1 2009-2010 2
Tujuan
• Mahasiswa memahami definisi pohon danpohon biner
• Berdasarkan pemahaman tersebut, mampu membuat fungsi sederhana yang memanipulasi pohon
• Mahasiswa mampu mengimplementasifungsi pemroses pohon dalam LISP melalui praktikum
![Page 3: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/3.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 3
Contoh Persoalan DirepresentasiSbg Pohon
• Menu dalam AplikasiKomputer
• Contoh (Ms Word): – File
• Open• Close• Save
– Table• Draw• Insert
– Table– Column– Row
• Delete
Menu Ms Word
File Table
Open Close Save Draw Insert Delete
Table Column Row
![Page 4: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/4.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 4
Pohon
Akar
SubPohon (dg representasi pohon)
PohonAkar
SubPohon
Elemen Pohon:-Akar basis-Sub Pohon (sub himpunan yang berupa pohon) rekurens
![Page 5: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/5.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 5
Beberapa Ilustrasi Representasia
b c
d e f g h
iGraph
abd
e f
g
i
h
c
Himpunan
ab
def
cgh
i
Indentasi
Bentuk Linier
Prefix: (a (b (d (), e (), f ()), c ( g (), h ( i ()))))(a (b (d) (e) (f)) (c (g) (h (i))))
Postfix: (((d,e,f) b, (g, (i) h) c) a)
![Page 6: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/6.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 6
Istilah
a
b c
d e f g h
i
Pohon(tree)
a
b c
d e f g h
i
Hutan (forest)
Simpul (node, elemen)
Cabang akar “a”memiliki cabang 2 sub pohon yaitu (b (d e f)) dan(c (g h(i)))
![Page 7: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/7.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 7
Istilah
a
b c
d e g h
i
Ayah (father) Anak (child) Saudara (sibling)
Akar “a” adalah“ayah”, sub pohon (b (d e)) dan sub pohon(c (g h(i))) adalah“anak”. Sub pohon (b (d e)) adalah“saudara” dari sub pohon (c (g h(i)))
Akar “b” adalah “ayah”, sub pohon(d) dan sub pohon (e) adalah“anak”. Sub pohon (d) adalah“saudara” dari sub pohon (e)
![Page 8: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/8.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 8
Istilah
a
b c
d e g h
iDaun (leaf) : simpul terminal
Jalan (path) : urutan tertentudari cabang, cth: a-c-h-i
Derajat : banyaknya anaksebuah simpul. Cth, derajat(c)=2, derajat(h)=1, derajat(g)=0
Tingkat (level) : panjang jalan dariakar sampaisimpul tertentu. Cth: tingkat (e) = 3, tingkat (i) = 4,
Kedalaman (depth) : tingkat terpanjang. Cth: kedalamanpohon=4
Lebar (breadth) : maksimumjml simpul pd suatu tingkat.
![Page 9: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/9.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 9
Pohon Biner• Definisi
1. Mungkin kosong2. Ada simpul akar dan dua
anak yang berupa pohonbiner, satu sub pohon kiridan satu sub pohon kanan. Anak mungkin kosong(kembali ke definisi 1).
+
3 *
4 53+(4*5)
ab
cPohon binercondong kiri
Pohon condong/skewed tree
a
b
cPohon binercondong kanan
Notasi Prefix: (a (b (c ( ) ( )) ( )) ( )) atau (a (b (c)( )) ( ))
Notasi Prefix: (a ( ) (b ( )(c ( ) ( )))) atau(a ( ) (b ( )(c)))
(+ (3 ( ) ( )) (* (4 ( )( )) (5 ( )( )))) atau (+ (3) (* (4)(5)))
Penulisan sub pohon: dgn ( )
![Page 10: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/10.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 10
TYPE POHON BINER
DEFINISI DAN SPESIFIKASI TYPEtype Elemen: {tergantung type node}type PohonBiner:<L: PohonBiner, A: Elemen, R: PohonBiner> {infix}, atautype PohonBiner:<A: Elemen, L: PohonBiner, R: PohonBiner> {prefix}, atautype PohonBiner:<L: PohonBiner, R: PohonBiner , A: Elemen> {postfix}{Pohon Biner terdiri dari Akar yang berupa elemen, L dan R adalah Pohon
Biner yang merupakan subpohon kiri dan subpohon kanan}
DEFINISI DAN SPESIFIKASI KONSTRUKTOR{Perhatikanlah bhw konstruktor pohon biner dg basis pohon kosong ditulis:a. Infix: //L A R\\b. Prefix: //A L R\\c. Postfix: //L R A\\}
![Page 11: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/11.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 11
SelektorAkar: pohon biner tidak kosong elemen{Akar(P) adalah akar dari P. Jika P adalah
//L A R\\ maka akar(P) = A}
Left: pohon biner tidak kosong pohon biner{Left(P) adalah sub pohon kiri dari P. Jika P adalah
//L A R\\ maka left(P) = L}
Right: pohon biner tidak kosong pohon biner{Right(P) adalah sub pohon kanan dari P. Jika P
adalah //L A R\\ maka Right(P) = R}
![Page 12: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/12.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 12
PredikatIsTreeEmpty: pohon biner boolean{IsTreeEmpty(P) true jika P adalah // \\}
IsOneElmt: pohon biner boolean{IsOneElmt(P) true jika P adalah //A\\}
IsUnerLeft: pohon biner boolean{IsUnerLeft(P) true jika P hanya mengandung sub pohon
kiri, P adalah //L A\\}
IsUnerRight: pohon biner boolean{IsUnerRight(P) true jika P hanya mengandung sub pohon
kanan, P adalah //A R\\}
![Page 13: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/13.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 13
PredikatIsBiner: pohon biner tidak kosong boolean{IsBiner(P) true jika P mengandung sub pohon kiri
dan sub pohon kanan, P adalah // L A R \\}
IsExistLeft: pohon biner tidak kosong boolean{IsExistLeft(P) true jika P mengandung sub pohon
kiri}
IsExistRight: pohon biner tidak kosong boolean{IsExistRight(P) true jika P mengandung sub pohon
kanan}
![Page 14: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/14.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 14
Pohon Basis-0
• Definisi rekursif– Basis: pohon biner kosong adalah pohon
biner {menggunakan predikat IsTreeEmpty}– Rekurens: Pohon biner tidak kosong terdiri
dari sebuah simpul akar dan dua anak: sub pohon kiri dan sub pohon kanan. Sub pohonkiri dan sub pohon kanan adalah pohon biner
![Page 15: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/15.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 15
Pohon Basis-1
• Definisi rekursif– Basis: pohon biner yang hanya terdiri dari
akar {menggunakan predikat IsOneElmt}– Rekurens: Pohon biner tidak kosong terdiri
dari sebuah simpul akar dan dua anak yang salah satunya pasti tidak kosong: sub pohonkiri dan sub pohon kanan.
• Gunakan IsUnerLeft, IsUnerRight, IsBiner untukmemastikan tidak terjadi pemrosesan pada pohonkosong
![Page 16: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/16.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 16
NbElmt: PohonBiner integer >= 0{NbElmt(P) memberikan banyaknya elemen dari pohon P}
Berapa jumlah elemen pohon dilihat dari elemen current?
akar
left right
Jumlah elemen = 1 (utk akar) + Jumlah_Elemen (pohon kiri) + Jumlah _Elemen (pohon kanan)
Menghitung Jumlah Elemen
![Page 17: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/17.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 17
Menghitung Jumlah Elemen, NbElmt, hal 109
• Rekursif– Basis 0: jika pohon kosong maka jumlah elemen
adalah 0– Rekurens: jumlah elemen = 1 (current element) +
jumlah elemen pohon kiri + jumlah elemen pohonkanan
NbElmt (P):if IsTreeEmpty(P) then 0 {basis 0}else {rekurens}
NbElmt(Left(P)) + 1 + NbElmt(Right(P))
![Page 18: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/18.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 18
Menghitung Jumlah Elemen, NbElmt, hal 111
• Basis 0NbElmt (P):
if IsTreeEmpty(P) then 0 {basis 0}else {rekurens}
NbElmt(Left(P)) + 1 + NbElmt(Right(P))
• Basis 1NbElmt (P):
if IsOneElmt(P) then 1 {basis 1}else {rekurens}
depend on PIsBiner(P): NbElmt(Left(P)) + 1 + NbElmt(Right(P))IsUnerLeft(P): NbElmt(Left(P)) + 1IsUnerRight(P): 1 + NbElmt(Right(P))
![Page 19: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/19.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 19
NbDaun: PohonBiner integer >= 0{NbDaun(P) memberikan banyaknya daun dari pohon P}
Berapa jumlah daun pohon dilihat dari elemen current?
akar
left right
Jumlah daun = 0 (utk akar) + Jumlah daun (pohon kiri) + Jumlah daun (pohon kanan)
daun
Menghitung Jumlah Daun
![Page 20: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/20.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 20
Menghitung Jumlah Daun, NbDaun, hal 109
• Analisis Kasus– Pohon kosong : jumlah daun = 0– Pohon tidak kosong: jumlah daun dihitung dengan
fungsi menghitung jumlah daun dengan basis-1
NbDaun (P):if IsTreeEmpty(P) then 0 { analisis kasus }else
NbDaun1(P)
![Page 21: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/21.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 21
Menghitung Jumlah Daun, NbDaun, hal 112
• Rekursif: Basis 1NbDaun1 (P):
if IsOneElmt(P) then 1 {basis 1}else {rekurens}
depend on PIsBiner(P): NbDaun1(Left(P)) +
NbDaun1(Right(P))IsUnerLeft(P): NbDaun1(Left(P))IsUnerRight(P): NbDaun1(Right(P))
![Page 22: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/22.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 22
Latihan• Buatlah realisasi dengan spesifikasi sebagai
berikut: 1. IsMember: PohonBiner, elemen boolean
{ IsMember(P,X) true jika ada elemen di P yang bernilai X }
2. IsSkewLeft: PohonBiner boolean{ IsSkewLeft(P) true jika P adalah pohon condong kiri.
Pohon kosong dianggap sebagai pohon yang condong kiri. Pohon satu elemen dianggap sebagaipohon condong kiri. }
3. LevelOfX: PohonBiner tdk kosong, elemen integer{ LevelOfX(P,X) mengirimkan level simpul X yang
merupakan elemen dari P. Prekondisi: X pasti adadi P. P adalah pohon yang tidak kosong danelemen-elemen P unik.}
![Page 23: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/23.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 23
Solusi Latihan 1IsMember(P,X)
Definisi dan SpesifikasiIsMember: PohonBiner, elemen boolean{ IsMember(P,X) true jika ada elemen di P yang bernilai X }RealisasiIsMember(P,X):
if IsTreeEmpty(P) then false {Basis-0}else {Rekurens}
if (Akar(P) = X) then trueelse
IsMember(Left(P),X) or IsMember(Right(P),X)
![Page 24: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/24.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 24
Solusi Latihan 2 IsSkewLeft(P)
Definisi dan SpesifikasiIsSkewLeft: PohonBiner boolean{ IsSkewLeft(P) true jika P adalah pohon condong kiri. Pohon kosong
dianggap sebagai pohon yang condong kiri. Pohon satu elemendianggap sebagai pohon condong kiri. }
IsSkewLeft1: PohonBiner tidak kosong boolean{ IsSkewLeft1(P) true jika P adalah pohon condong kiri. }RealisasiIsSkewLeft(P) : if IsTreeEmpty(P) then true { Analisis Kasus }
else IsSkewLeft1(P)IsSkewLeft1(P) :
if IsOneElmt(P) then true { Basis-1 }else { Rekurens }
if IsUnerLeft(P) then IsSkewLeft1(Left(P))else false
![Page 25: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/25.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 25
Solusi Latihan 3LevelOfX (P,X)
Definisi dan SpesifikasiLevelOfX: PohonBiner, elemen integer{ LevelOfX(P,X) mengirimkan level simpul X yang merupakan elemen
dari P. Prekondisi: X pasti ada di P. P adalah pohon yang tidakkosong dan elemen-elemen P unik.}
IsMember: PohonBiner tidak kosong, elemen boolean{ IsMember(P,X) true jika ada elemen di P yang bernilai X. }RealisasiLevelOfX(P,X):
if Akar(P) = X then 1 {Basis-1}else { Rekurens }
if IsMember(Left(P),X) then 1+LevelOfX(Left(P),X)else { pasti IsMember(Right(P),X) = true }
1+LevelOfX(Right(P),X)
![Page 26: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/26.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 26
MakeListPreOrderDefinisi dan SpesifikasiMakeListPreOrder : PohonBiner → list of node { MakeListPreOrder(P) : Jika P adalah pohon kosong, maka menghasilkan list kosong. Jika P bukan pohon kosong: menghasilkan list yang elemennya adalah semua node pohon P dengan urutan preorder. }Realisasi{ primitif-primitif list of node mengacu pada ADT list of integer}MakeListPreOrder(P):
if (IsTreeEmpty(P)) then [ ] {basis-0}else {rekurens}
Konso (Akar(P),Konkat (MakeListPreOrder(Left(P),
MakeListPreOrder(Right(P))))
![Page 27: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/27.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 27
Translasi LISP
![Page 28: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/28.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 28
Contoh Representasi Pohon Binerdi LISP
• Menggunakan List• Contoh representasi prefix
(1 (2 () ()) (3 (4 () ()) (5 () ())))
1
2 3
4 5
![Page 29: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/29.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 29
Selektor
(defun Akar (PB)(car PB))
(defun Left (PB)(car (cdr PB)))
(defun Right (PB)(car (cdr (cdr PB))))
![Page 30: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/30.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 30
Predikat
(defun IsTreeEmpty (P)(null P))
(defun IsOneElmt (P)(and (not (IsTreeEmpty P))
(IsTreeEmpty (Left P))(IsTreeEmpty (Right P))))
![Page 31: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/31.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 31
Predikat(defun IsUnerLeft (P)
(and (IsTreeEmpty (Right P))(not (IsTreeEmpty (Left P)))))
(defun IsUnerRight (P)(and (IsTreeEmpty (Left P))
(not (IsTreeEmpty (Right P)))))
(defun IsBiner (P)(and (not (IsTreeEmpty (Right P)))
(not (IsTreeEmpty (Left P)))))
![Page 32: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/32.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 32
Fungsi Lain
(defun NbElmt (P)(if (IsTreeEmpty P) 0 ; basis-0
(+ (NbElmt (Left P)) ; rekurens1(NbElmt (Right P)))))
![Page 33: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/33.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 33
Tugas di Rumah
• Materi pra-praktikum:– ADT pohon biner
• Butuh ADT list of node adaptasikan dari ADT list of integer
![Page 34: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/34.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 34
Kuis-1
• Kuis 1 akan dilaksanakan pada hariKamis, 10 Sept 2009 pada jam kuliah(14.00-selesai)
• Tempat: di kelas masing-masing• Materi: seluruh materi mulai dari minggu 1
s.d. minggu 4 (dalam notasi fungsional)
![Page 35: Tipe Rekursif: POHON (TREE) - Welcome to UDiNus Repository ...eprints.dinus.ac.id/14514/1/[Materi]_14a._Pohon_Fungsional.pdf · 2009/9/8 IF2030/Sem. 1 2009-2010 3 Contoh Persoalan](https://reader038.vdocuments.site/reader038/viewer/2022110113/5c8e40c909d3f218598cc92a/html5/thumbnails/35.jpg)
2009/9/8 IF2030/Sem. 1 2009-2010 35
Praktikum Ke-4
• Praktikum ke-4 akan dilaksanakan pada:– Senin, 28 Sept 2009– Selasa, 29 Sept 2009
• Materi: pohon biner• Untuk melihat pembagian shift terbaru,
lihat pengumuman di:– Mailing list– Situs kuliah online