Struktur Data 2
*Pohon Ekspresi *
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 - 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
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));
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));
5 3
Token Langkah
push(new ExpressionTree(4,null,null));
4
- 4
5 3
Token Langkah
op2 = pop
*
op1 = pop
push(new ExpressionTree(*,op1,op2));
- 4
5 3
Token Langkah
push(new ExpressionTree(9,null,null));
9
* 9
- 4
5 3
Token Langkah
op2 = pop
+
op1 = pop
push(new ExpressionTree(+,op1,op2));
+
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