樹的三種遍歷方式 白話解讀 波蘭表示式為例

2021-06-26 13:04:43 字數 1127 閱讀 6888

1. 先序遍歷

2. 中序遍歷

3. 後序遍歷

書上簡單的解釋讓我看了半天都沒明白~,書上解釋是  

先序遍歷:訪問根節點         -> 訪問左節點          ->   訪問右節點

中序遍歷:中序遍歷左子樹  -> 訪問根節點          ->   中序遍歷右子樹

後序遍歷:後序遍歷左子樹  -> 後續遍歷右子樹   ->   訪問根節點

這尼瑪對新手來說真夠晦澀的。。。學校發的書居然還沒有舉例子,老師講是講了沒錯,但是舉得例子沒有代表性,一直把我弄得迷迷糊糊的,現在深夜再看 嚴蔚敏奶奶這本進店的資料結構,她是拿的 波蘭表示式舉例,太經典了,太有代表性和實際意義了(好吧,很有可能是我之前就做過逆波蘭表示式的題目,對它有感情吧),我結合嚴奶奶書上的例子再用我的話 複述一遍,希望能幫助菜鳥更順利的理解。

按先序遍歷為 : - + a * b - c d / e f  (p.s  先序遍歷最好理解了。。。就是乙個 dfs 嘛)

按中序遍歷為 : a + b * c - d - e / f 

按後序遍歷為 : a b c d - * + e d /

很巧妙的是,

先序遍歷就是 【波蘭表示式 (字首表示式)】 

中序遍歷就是【中綴表示式(平常用的也是這種)】

後序遍歷就是 【逆波蘭表示式(字尾表示式)】 

用我們自己的話說,

中序遍歷就是 :  一開始找左節點,直到左節點找不到了,那麼我就返回找根節點(a 然後 +),根節點往下的另外乙個節點如果存在左節點的話,那麼我就先忽略根節點的這兒子,直接找他兒子的 左節點,也就是 b  直到找不到左節點為止,返回根節點。    堅持的乙個原則就是,一直從左節點開始找,找不到返回根節點,根節點的另外乙個分支(注意是根節點的另外乙個分支,根節點的右兒子,如果有的話)先湖忽略,找它的做兒子,最後才是返回找它。

後序遍歷就是一條路走到黑,一直找左節點,找不到返回找 上一級的左節點,總之就是一直找左節點,直到怎麼找也找不到為止,此時再找右節點,最後才是訪問 根節點

p.s

噗。。。深夜碼這麼多字眼都花了。。。真想買個大螢幕

樹的三種遍歷方式解析

二叉樹的遍歷分為以下三種 先序遍歷 遍歷順序規則為 根左右 中序遍歷 遍歷順序規則為 左根右 後序遍歷 遍歷順序規則為 左右根 什麼是 根左右 就是先遍歷根,再遍歷左孩子,最後遍歷右孩子 舉個例子,看下圖 圖從網上找的 先序遍歷 abcdefghk 中序遍歷 bdcaehgkf 後序遍歷 dcbhk...

樹的三種遍歷

目錄二叉樹的中序遍歷 遞迴 二叉樹的後序遍歷 遞迴 總結 中序遍歷的堆疊實現 非遞迴 層次遍歷的佇列實現 兩種遍歷確定唯一的二叉樹 必須含中序遍歷 1.先訪問根節點 2.左子樹遞迴呼叫先序遍歷 3.右子樹遞迴呼叫先序遍歷void preorder bintree bt a bdfe cghi 1.中...

List遍歷 三種方式

對list的遍歷有三種方式 listlist new arraylist list.add new a list.add new a 第一種 for iteratorit list.iterator it.hasnext 這種方式在迴圈 執行過程中會進行資料鎖定,效能稍差,同時,如果你想在尋歡過程中...