if (tree not empty) postfix (tree left subtree)
postfix (tree right subtree) print (tree token)
end if
end postfix
Prefiks oʻtish[tahrir | manbasini tahrirlash] Psevdokod:
Algoritm prefiks ( daraxt )
Algorithm prefix (tree)
/*Print the prefix expression for an expression tree. Pre : tree is a pointer to an expression tree
Ifodalar daraxtini qurish[tahrir | manbasini tahrirlash]
Daraxtning qurilishi postfiks ifodasini bir vaqtning oʻzida bitta belgini oʻqish orqali amalga oshiriladi. Agar belgi operand boʻlsa, bitta tugunli daraxt yaratiladi va uning koʻrsatkichi stekga suriladi. Agar belgi operator boʻlsa, ikkita T1 va T2 daraxtiga koʻrsatgichlar stekdan chiqariladi va ildizi operator boʻlgan va chap va oʻng sonlari mos ravishda T2 va T1 ni koʻrsatadigan yangi daraxt hosil boʻladi. Keyin ushbu yangi daraxtga koʻrsatgich stekka suriladi[2].
Misol[tahrir | manbasini tahrirlash]
Postfiks yozuvidagi kirish: ab + cde + * * Birinchi ikkita belgi operandlar boʻlganligi sababli, bitta tugunli daraxtlar yaratiladi va ularga koʻrsatgichlar stekga suriladi. Qulaylik uchun stek chapdan oʻngga oʻsadi.
Keyingi belgi „+“ belgisidir. U ikkita koʻrsatgichni daraxtlarga koʻchiradi, yangi daraxt hosil boʻladi va unga koʻrsatgich stekga suriladi.
Keyin c, d va e oʻqiladi. Har biri uchun bitta tugunli daraxt yaratiladi va mos keladigan daraxtga koʻrsatgich stekga suriladi.
Davom etishda „+“ belgisi oʻqiladi va u oxirgi ikkita daraxtni birlashtiradi.
Endi „*“ oʻqiladi. Oxirgi ikkita daraxt koʻrsatkichi ochiladi va ildiz sifatida „*“ belgisi bilan yangi daraxt hosil boʻladi.
Nihoyat, oxirgi belgi oʻqiladi. Ikki daraxt birlashtiriladi va oxirgi daraxtda koʻrsatgich stekda qoladi.
Do'stlaringiz bilan baham: |