Anda di halaman 1dari 25

Modul 5

Struktur Data 2
*Pohon Ekspresi *

Semester Genap 2016/2017


Teknik Informatika Universitas Sanata Dharma

Disusun oleh :
Tim Dosen
USD
Kompetensi
Mahasiswa mampu membuat dan
mengimplementasikan pohon ekspresi
Mahasiswa mampu mengimplementasi
pembuatan ekspresi dari pohon
ekspresi

2
Expression Tree - 1
Sebuah expression tree adalah sebuah binary tree
dengan sifat :
Setiap leaf adalah sebuah operand.
Root dan internal nodes adalah operators.
Subtrees adalah subexpressions, dengan root adalah sebuah
operator.
Expression Tree - 2
Dalam expression tree, 3 cara traversals
akan membentuk 3 format ekspresi yang
berbeda yaitu : infix, postfix, and prefix.
Inorder traversal menghasilkan infix
expression
Postorder traversal menghasilkan postfix
expression
Preorder traversal menghasilkan prefix
expression
Contoh Expression Tree
A+BC-DE ((A+(BC))-(DE))

-
+

B C D E
Contoh Expression Tree
A*B+C (A*(B+C)) *
A +

B C

A -B+CDE ((A (-B))+((CD)E))


+

A - E

B C D
Infix Traversal
Saat mencetak infix expression tree, kita
harus menambahkan kurung buka pada awal
setiap ekspresi dan kurung tutup pada akhir
ekspresi.
Dikarenakan root dari tree dan setiap
subtree dari tree menyatakan
subexpression, maka kita mencetak kurung
buka saat memulai sebuah tree atau
subtree dan kurung tutup saat semua anak
dari tree/subtree sudah diproses.
Infix Traversal
Algorithm infix (val tree <tree pointer>)
if (tree not empty)
if (treetoken is an operand)
print (tree token)
else
print (open parenthesis)
infix (tree left)
print (tree token)
infix (tree right)
print (close parenthesis)
end if
end if
return
end infix
Postfix Traversal
Menggunakan postorder traversal seperti pada tree.
Tidak membutuhkan kurung
Algorithm postfix (val tree <tree pointer>)
if (tree not empty)
postfix (tree left)
postfix (tree right)
print (tree token)
end if
return
end postfix
Prefix Traversal

Menggunakan preorder traversal seperti pada tree.


Tidak membutuhkan kurung
Algorithm prefix (val tree <tree pointer>)
if (tree not empty)
print (tree token)
prefix (tree left)
prefix (tree right)
end if
return
end prefix
Infix or postfix or prefix ?
Bentuk infix 3+5*4. Berapa hasilnya
?
Bentuk prefix *+3 5 4. Berapa
hasilnya ?
Bentuk 35+4*. Berapa hasilnya ?
Konversi bentuk infix,
prefix, postfix
Ada 6 konversi yang dapat dikerjakan :
infix -> prefix,
infix -> postfix,
prefix -> infix,
prefix -> postfix,
postfix -> prefix,
postfix -> infix.
Untuk 2 yang pertama menggunakan
stack, sedangkan 4 yang terakhir
menggunakan Expression Trees.
Membuat Pohon Ekspresi
dari Ekspresi Postfix
Menggunakan stack untuk menyimpan
operand
Tree yang dibuat :
Node yang berisi nama variabel menjadi
daun
Node yang berisi operator memiliki paling
sedikit 2 anak yang dapat berupa
operator lain atau node daun
Membuat Pohon Ekspresi
dari Ekspresi Postfix

ABCD*-+E/
*
A *
B C D D
C C C D
B
B B B
A A A A A
Stack Stack Stack Stack Stack
Membuat Pohon Ekspresi
dari Ekspresi Postfix

ABCD*-+E/ /
- + E
/
E
+ E
- + +
A -
B * A - A -
B *
C D B * B *
C D C D C D
A
Stack Stack Stack Stack
Membuat Pohon Ekspresi
dari Ekspresi Postfix
Ilustrasi Lain
5 3 - 4 * 9 +

Token Langkah

5 push(new ExpressionTree(5,null,null));

Stack (top at right)

Token Langkah
push(new ExpressionTree(3,null,null));
3
Stack (top at right)

5 3
Token Langkah
op2 = pop
-
op1 = pop
push(new ExpressionTree(-,op1,op2));

Stack (top at right)

5 3
Token Langkah
push(new ExpressionTree(4,null,null));
4

Stack (top at right)

- 4

5 3
Token Langkah
op2 = pop
*
op1 = pop
push(new ExpressionTree(*,op1,op2));

Stack (top at right)

- 4

5 3
Token Langkah
push(new ExpressionTree(9,null,null));
9

Stack (top at right)

* 9

- 4

5 3
Token Langkah
op2 = pop
+
op1 = pop
push(new ExpressionTree(+,op1,op2));

Stack (top at right)

+
End of the expression
* 9 has been reached, and
the full expression tree
- 4 is the only tree left on
the stack
5 3
Latihan
Membuat pohon ekspresi dari
ekspresi postfix
Operasi traversal pada pohon
ekspresi
Buatlah algoritma /flowchart dan
diagram kelas yang digunakan
Buat Pohon Ekspresi dari Infix

Anda mungkin juga menyukai