Decode360's Blog

          業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          前/中/后綴表達式的轉換
          ?
          ??? 自然表達式轉換為前/中/后綴表達式,其實是很簡單的。首先將自然表達式按照優先級順序,構造出與表達式相對應的二叉樹,然后對二叉樹進行前/中/后綴遍歷,即得到前/中/后綴表達式。
          ?
          ??? 舉例說明將自然表達式轉換成二叉樹:
          ?
          ??? a×(b+c)-d
          ?
          ??? ① 根據表達式的優先級順序,首先計算(b+c),形成二叉樹
          ??? Expression01
          ???
          ??? 然后是a×(b+c),在寫時注意左右的位置關系
          ??? Expression02
          ?
          ??? 最后在右邊加上 -d
          ??? Expression03
          ?
          ?
          ??? 然后最這個構造好的二叉樹進行遍歷,三種遍歷的順序分別是這樣的:
          ?
          ??? ① 前序遍歷:根-左-右
          ??? 中序遍歷:左-根-右
          ??? 后序遍歷:左-右-根
          ?
          ??? 所以還是以剛才的這個例子,在最終二叉樹的基礎上可以得出:
          ?
          ??? 前綴表達式:-*a+bcd
          ??? 中綴表達式:a*b+c-d
          ??? 后綴表達式:abc+*d-
          ?
          ?
          一些其他的遍歷原則:
          ?
          ??? 1、深度優先遍歷:
          ?
          ??? 首先訪問出發點V,并將其標記為已訪問過;然后依次從V出發搜索V的每個鄰接點W。若W未曾訪問過,則以W為新的出發點繼續進行深度優先遍歷,直至圖中所有和源點V有路徑相通的頂點(亦稱為從源點可達的頂點)均已被訪問為止。若此時圖中仍有未訪問的頂點,則另選一個尚未訪問的頂點作為新的源點重復上述過程,直至圖中所有頂點均被訪問為止。
          ?
          ??? 2、廣度優先遍歷:
          ?
          ??? 首先訪問出發頂點V,然后訪問與頂點V鄰接的全部未被訪問過的頂點W0,W1,...WK-1;接著再依次訪問與頂點W0,W1,...WK-1鄰接的全部未被訪問過的頂點,以此類推,直至圖的所有頂點都被訪問到,或出發頂點V所在的連通分量的全部頂點都被訪問到為止。
          ?
          ??? 注:對于樹來說,深度優先就是從左到右,從上到下;廣度優先就是從上到下,從左到右。
          ?
          ?
          posted on 2009-05-21 22:41 decode360 閱讀(505) 評論(0)  編輯  收藏 所屬分類: 01.IT_Base
          主站蜘蛛池模板: 宜兴市| 清原| 沽源县| 乌拉特中旗| 凤翔县| 腾冲县| 贞丰县| 涿州市| 安达市| 凤凰县| 峨眉山市| 武威市| 阳新县| 海伦市| 古田县| 新蔡县| 永兴县| 赤壁市| 大邑县| 乐昌市| 湖口县| 博客| 阜康市| 阳谷县| 外汇| 横山县| 洛阳市| 景东| 潮安县| 土默特右旗| 江达县| 兴国县| 普安县| 合山市| 巴里| 英吉沙县| 乐陵市| 文昌市| 弥勒县| 海南省| 喜德县|