在數據結構當中一個很重要的結構則是樹了,那么樹的先序,中序,后序遍歷是怎么進行起來的呢?
一.先序遍歷
先序遍歷是最簡單的,也就是使用深度優先搜索(DFS)算法在樹當中進行遍歷,我們首先在樹的左端走到底,在往下走的時候,沒遇到一個節點就打印出來,直到走到底之后再向上返回,如果遇到已經打印,也就是走過的節點則查看這個節點的右端有沒有沒有打印的節點,如有則打印,沒有則不打印。在下方這張圖當中數字代表我們打印節點的順序,1代表第一個就打印了出來,2代表第二個打印出來。
在上面這張圖當中,首先樹的根節點是“make money fast”,因此這個節點最先被打印出來,然后從左走到底,一次打印“motivation”,greed。這個時候走到底了,我們向上返回,發現前一個節點motivition的右子節點還沒有打印,也就是avidity,因此打印出avidity作為第四個節點。第四個節點向下搜索發現沒有節點了,因此又向上返回,直到樹的根節點。
發現樹的根節點下還有兩個子節點沒有打印,因此先打印這兩個子節點左邊的節點,也就是method。然后繼續往左下走,依次打印出stock fraud, ponzi scheme,bank robbery,最后向上返回打印出最后一個節點References。這是這三個遍歷方法當中最簡單的一個方法了,接下來我們來看中序遍歷。
二.中序遍歷
如下圖所示:
中序遍歷是我們走到底之后發現沒有沒有東西了才開始打印,而不是像先序一樣邊走邊打印。在一棵子樹當中的打印順序是“左節點——跟節點——右節點”。因此我們也是首先向左下遍歷到最底部,發現1下面沒有東西了,因此向上返回打印跟節點,也就是2,打印完之后再前往右節點進行搜索,進入右節點發現4還有子節點,因此先打印左邊的子節點3,再打印中間的4,最后大印5。接着向上返回到6,這個是整個左子樹的根節點,因此將其打印,再遍歷右子樹即可。
三.后序遍歷
如下所示:
后序遍歷就是先打印最底部的東西,和先序打印相反。遵循先遍歷左樹,然后進行“左樹——右樹——中樹”的順序進行打印。