樹-二叉搜索樹的排序問題


遍歷一棵樹是指訪問樹的每個節點並對它們進行某種操作的過程。訪問樹的所有節點的方式有三種:中序、先序、后序。

中序遍歷是一種以上行順序訪問BST所有節點的遍歷方式,也就是從小到達的順序訪問所有節點。中序遍歷的一種應用就是對樹進行排序操作。

以上是中序排列的編寫,使用了一個輔助私有函數,來接收一個節點和對應的回調函數作為參數,最常使用的算法是遞歸。通過使用以上函數,在控制台上的輸出結果是從小到大的排列的數。

先序遍歷是以優於后代節點的順序訪問每個節點的,先序遍歷的一種應用是打印一個結構化的文檔。

先序和中序遍歷不同點是,先序遍歷會先訪問節點本身(行{1}),然后再訪問它的左側子節點,最后是右側子節點。在控制台上最后輸出的結果是從頂端往下的先左側到底端,在從左側底端往右側底端向上遍歷,最后遍歷到右側的最右邊的節點。

后序遍歷則是先訪問節點的后代節點,再訪問節點本身。后序遍歷的一種應用是計算一個目錄和它的子目錄中的所有文件所占空間的大小。

我們來看它的實現:

后序遍歷會先訪問左側的子節點,然后是訪問右側子節點,最后是父節點。

給樹進行遍歷之后,還可以嘗試獲取其最大值和最小值;方法和前面差不多,都是構造一個輔助函數,來達到我們要的效果。

在某些時候我們需要搜索一個特定的值,看是不是在這個樹中,這時候可以創建一個搜索函數。

然后還可以創建一個移除函數,達到最基本的移除效果。

 

 這里我創建了一個基本二叉搜索樹的遍歷,搜索,刪除的功能,這只是它的一些基本功能,更多的東西還需要繼續學習下去,我會加油的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM