notasi prefix infix-postifx- expression tree

25
Pertemuan Pertemuan Struktur Data Struktur Data * * Pohon Ekspresi * Pohon Ekspresi * STMIK JAKARTA STI&K STMIK JAKARTA STI&K Disusun Disusun oleh : oleh : Aqwam Rosadi Aqwam Rosadi K K

Upload: acomic-comic

Post on 19-Jun-2015

496 views

Category:

Software


19 download

DESCRIPTION

Acomic TKJ

TRANSCRIPT

Page 1: Notasi prefix infix-postifx- expression tree

Pertemuan Pertemuan Struktur DataStruktur Data **Pohon Ekspresi *Pohon Ekspresi *

Pertemuan Pertemuan Struktur DataStruktur Data **Pohon Ekspresi *Pohon Ekspresi *

STMIK JAKARTA STI&KSTMIK JAKARTA STI&K

Disusun oleh :Disusun oleh :Aqwam Rosadi Aqwam Rosadi

KK

Page 2: Notasi prefix infix-postifx- expression tree

2

Kompetensi

• Mahasiswa mampu membuat dan mengimplementasikan pohon ekspresi

• Mahasiswa mampu mengimplementasi pembuatan ekspresi dari pohon ekspresi

Page 3: Notasi prefix infix-postifx- expression tree

Expression Tree - 1 • Sebuah expression tree adalah sebuah binary tree dengan

sifat :

– Setiap leaf adalah sebuah operandoperand.

– Root dan internal nodes adalah operatorsoperators.

– Subtrees adalah subexpressions, dengan root adalah sebuah operator.

Page 4: Notasi prefix infix-postifx- expression tree

Expression Tree - 2

• Dalam expression tree, 3 cara traversals

akan membentuk 3 format ekspresi yang

berbeda yaitu : infixinfix, postfixpostfix, and prefixprefix.

– Inorder traversal menghasilkan infix infix

expressionexpression

– Postorder traversal menghasilkan postfix postfix

expressionexpression

– Preorder traversal menghasilkan prefix prefix

expressionexpression

Page 5: Notasi prefix infix-postifx- expression tree

Contoh Expression Tree

• A+BC-DE ((A+(BC))-(DE))

+

A

D E

-

B C

Page 6: Notasi prefix infix-postifx- expression tree

Contoh Expression Tree

• A*B+C (A*(B+C))

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

*

A +

B C

A

E

+

-

B C D

Page 7: Notasi prefix infix-postifx- expression tree

Infix Traversal

• Saat mencetak infix expression tree, kita harus

menambahkan kurung buka kurung buka pada awal setiap

ekspresi dan kurung tutupkurung tutup pada akhir ekspresi.

– Dikarenakan root dari tree dan setiap

subtree dari tree menyatakan

subexpressionsubexpression, maka kita mencetak kurung

buka saat memulai sebuah tree atau subtree

dan kurung tutup saat semua anak dari

tree/subtree sudah diproses.

Page 8: Notasi prefix infix-postifx- expression tree
Page 9: Notasi prefix infix-postifx- expression tree

Algorithm infixinfix (val tree <tree pointer>) if (tree not empty) if (tree→token is an operand) print (tree → token) else print (open parenthesis) infixinfix (tree →left) print (tree →token) infixinfix (tree →right) print (close parenthesis) end if end if return end infix

Infix TraversalInfix Traversal

Page 10: Notasi prefix infix-postifx- expression tree

Postfix Traversal

• Menggunakan postorder traversal seperti pada tree.

• Tidak membutuhkan kurung

Algorithm postfixpostfix (val tree <tree pointer>)

if (tree not empty)

postfixpostfix (tree →left)

postfixpostfix (tree →right)

print (tree →token)

end if

return

end postfix

Page 11: Notasi prefix infix-postifx- expression tree

Prefix Traversal

• Menggunakan preorder traversal seperti pada tree.

• Tidak membutuhkan kurung

Algorithm prefixprefix (val tree <tree pointer>)

if (tree not empty)

print (tree →token)

prefixprefix (tree →left)

prefix prefix (tree →right)

end if

return

end prefix

Page 12: Notasi prefix infix-postifx- expression tree

Infix or postfix or prefix ?

• Bentuk infix 3+5*4. Berapa hasilnya ?

• Bentuk prefix *+3 5 4. Berapa hasilnya ?

• Bentuk 35+4*. Berapa hasilnya ?

Page 13: Notasi prefix infix-postifx- expression tree

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.

Page 14: Notasi prefix infix-postifx- expression tree

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

Page 15: Notasi prefix infix-postifx- expression tree

Membuat Pohon Ekspresi dari

Ekspresi Postfix

• A B C D * - + E /

B

B

Stack

A

A

StackA

B

C

StackA

D

Stack

C

B

A

C

D*

Stack

B

A

C D

*

Page 16: Notasi prefix infix-postifx- expression tree

Membuat Pohon Ekspresi dari

Ekspresi Postfix

• A B C D * - + E /

Stack

E

-

B

C D

-

*

Stack

+

A

B

C D

-

*

+

Stack

E

A

B

C D

-

*

+

Stack

/

/

E

A

B

C D

-

*

+

Page 17: Notasi prefix infix-postifx- expression tree

Membuat Pohon Ekspresi dari Ekspresi

PostfixIlustrasi Lain

Page 18: Notasi prefix infix-postifx- expression tree

5 3 - 4 * 9 +

Token

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

Langkah

Stack (top at right)

5

Token

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

Langkah

Stack (top at right)

5 3

Page 19: Notasi prefix infix-postifx- expression tree

Token

- op2 = pop

op1 = pop

push(new ExpressionTree(-,op1,op2));

Langkah

Stack (top at right)

5

-

3

Page 20: Notasi prefix infix-postifx- expression tree

Token

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

Langkah

Stack (top at right)

5

-

3

4

Page 21: Notasi prefix infix-postifx- expression tree

Token

* op2 = pop

op1 = pop

push(new ExpressionTree(*,op1,op2));

Langkah

Stack (top at right)

5

-

3

4

*

Page 22: Notasi prefix infix-postifx- expression tree

Token

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

Langkah

Stack (top at right)

5

-

3

4

* 9

Page 23: Notasi prefix infix-postifx- expression tree

Token

+ op2 = pop

op1 = pop

push(new ExpressionTree(+,op1,op2));

Langkah

Stack (top at right)

5

-

3

4

* 9

+End of the expression has been reached, and the full expression tree is the only tree left on the stack

Page 24: Notasi prefix infix-postifx- expression tree

Praktikum

• Membuat pohon ekspresi dari ekspresi postfix

• Operasi traversal pada pohon ekspresi

• Berupa algoritma & rancangan program

Page 25: Notasi prefix infix-postifx- expression tree

“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)