Pertemuan Struktur Data *Pohon Ekspresi * STMIK JAKARTA STI&K Disusun oleh : Aqwam Rosadi K
Kompetensi Mahasiswa mampu membuat dan mengimplementasikan pohon ekspresi Mahasiswa mampu mengimplementasi pembuatan ekspresi dari pohon ekspresi
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)) - + A B C D E
Contoh Expression Tree A*B+C (A*(B+C)) A -B+CDE ((A (-B))+((CD)E)) * 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 (tree→token is an operand) print (tree → token) else print (open parenthesis) infix (tree →left) print (tree →token) infix (tree →right) print (close parenthesis) 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 A B C D * - + E / * * A B C D D C D C C B B B B A A A A A Stack Stack Stack Stack Stack
Membuat Pohon Ekspresi dari Ekspresi Postfix A B C D * - + E / / - + E / E A B C D - * + E B C D - * A B C D - * + A B C D - * + Stack Stack Stack Stack
Membuat Pohon Ekspresi dari Ekspresi Postfix Ilustrasi Lain
push(new ExpressionTree(5,null,null)); 5 5 3 - 4 * 9 + Token Langkah push(new ExpressionTree(5,null,null)); 5 Stack (top at right) 5 Token Langkah push(new ExpressionTree(3,null,null)); 3 Stack (top at right) 5 3
push(new ExpressionTree(-,op1,op2)); - Token Langkah op2 = pop op1 = pop push(new ExpressionTree(-,op1,op2)); - Stack (top at right) - 5 3
push(new ExpressionTree(4,null,null)); 4 Token Langkah push(new ExpressionTree(4,null,null)); 4 Stack (top at right) - 4 5 3
push(new ExpressionTree(*,op1,op2)); * Token Langkah op2 = pop op1 = pop push(new ExpressionTree(*,op1,op2)); * Stack (top at right) * - 4 5 3
push(new ExpressionTree(9,null,null)); 9 Token Langkah push(new ExpressionTree(9,null,null)); 9 Stack (top at right) * 9 - 4 5 3
push(new ExpressionTree(+,op1,op2)); + Token Langkah op2 = pop op1 = pop push(new ExpressionTree(+,op1,op2)); + Stack (top at right) + End of the expression has been reached, and the full expression tree is the only tree left on the stack * 9 - 4 5 3
Praktikum Membuat pohon ekspresi dari ekspresi postfix Operasi traversal pada pohon ekspresi Berupa algoritma & rancangan program
“Watch your habits, for they become your character “Watch your habits, for they become your character. Develop your character, for it becomes your destiny” (Perhatikan kebiasaanmu, karena itu akan menjadi karaktermu. Bentuklah karaktermu, karena itu akan menentukan masa depanmu)