5 5 二分搜尋樹的遍歷(深度優先遍歷)

2021-08-08 08:58:46 字數 722 閱讀 7320

首先嘗試走到最深。

遍歷方式

對遍歷方式解釋

前序遍歷

先訪問當前節點,再依次遞迴訪問左右子樹。

中序遍歷

遞迴訪問左子樹,再訪問自身、再遞迴訪問右子樹。

後序遍歷

遞迴訪問左右子樹,再訪問自身節點。釋放整個二叉樹的時候會使用到後序遍歷。

把握要點:訪問當前節點的順序是在前面、中間還是在後面。

其實,**的實現是異常簡單的!

遍歷的順序應該是下面這張圖展示的樣子。

圖:二分搜尋樹的深度優先遍歷

補充說明:仔細想想向二分搜尋樹中插入元素的過程,就明白了,為什麼左子樹中的所有元素小於根節點,右子樹的所有元素大於根節點,並且二分搜尋樹中的 key 沒有重複元素。

下面的圖表多看幾遍就明白了,千萬不要忘記了對 node 是否為 null 的判斷。下面用遞迴的方式編寫前、中、後序遍歷是十分簡單的。它們的結構是完全相同的。

記憶要點:左右子樹都是遞迴處理,樹根是真正要執行的操作。

後序遍歷的乙個重要特點:前序和後序都訪問完以後,才做操作。

可以看到,紅色標註的部分是結構一致的。

中序遍歷的重要結論:中序遍歷可以將資料按照從小到大公升序排列。

後序遍歷的重要結論:後續遍歷在空間釋放的時候可以先釋放左右節點,再釋放自身。

二分搜尋樹的遍歷

對於一棵二叉樹來說,如果我們想要把這棵樹中的所有節點都給遍歷一遍,那麼我們就需要了解二叉樹的遍歷方式。二叉樹的遍歷方式分為以下三種 二叉樹的乙個簡單的結構如下圖所示 對於其中的 前 中 後 我們都可以理解為是根節點的訪問順序。遍歷時,我們分為三個階段 前 中 後 對於前序遍歷來說 也就是在前階段訪問...

二分搜尋樹的遍歷

遍歷 訪問二分搜尋樹的每乙個元素。深度優先遍歷 每乙個,節點訪問三次。第一次訪問節點的時候最數進行操作。public void preorder 前序遍歷以node為根的二分搜尋樹,遞迴 private void preorder node node public string tostring 生...

二分搜尋樹5 廣度優先遍歷(層序遍歷)

引入佇列的概念 將28入隊,佇列不為空,將隊首28元素取出,輸出,將其左右兩個節點入隊 16 30 將隊首16元素取出,輸出,將其左右兩個節點入隊 30 13 22 將隊首30元素取出,輸出,將其左右兩個節點入隊 13 22 29 42 迴圈這樣的操作,直到隊列為空 結果 28 16 30 13 2...