二叉樹 四 二叉查詢樹 BST

2021-08-19 11:03:11 字數 1056 閱讀 8241

二叉查詢樹:對於二叉查詢樹的任何乙個節點,設這個節點的值為k,這個節點的左子樹的任意乙個節點的值都小於k,右子樹的任何乙個節點的值都大於等於k。

對於任何的二叉查詢樹,使用中序遍歷(左根右),可以將值從小到大列印出來。

對於二叉查詢樹的檢索,例如圖a,需要檢索32,那麼首先需要檢索根節點,發現37大於32,進入二叉搜尋樹的左子樹,發現24小於32,然後在進入右子樹,發現根節點等於32,那麼就返回找到了。

對於檢索35,進入的路徑和上述一樣,但是最後返回null,並沒有找到。

對於插入新的值,我們需要將首先找到插入的位置,然後在進行插入,如果二叉樹不允許插入相同的值,在二叉查詢樹中有這個值的存在,那麼就報異常,如果允許,需要插入相同值的同樣節點。對於節點值為35,插入圖a,如下

從bst中刪除乙個節點,需要首先找到這個節點然後在進行處理,我們首先以刪除乙個最小值的節點為例,找到最小值的點,簡單,我們只需要一直往左子樹遍歷下去,就可以找到最小值的點,在刪除這個節點之前,需要將這個節點的父節點的指標,指向節點的右子樹節點。具體的示意圖如下:

接下來我們需要討論的是刪除任意乙個值的節點r,這裡刪除有多種情況,如果r沒有子節點,可以將其父節點的指標設定為null,如果r只有乙個節點,那麼將父節點的指標指向它的節點,如果有連個子節點,我們就使用乙個值代替他。那麼究竟是用什麼樣的值代替他呢?那麼就是大於刪除值的最小值,小於刪除值的最大值。

上圖中,我們使用右子樹的最小值進行替代root節點。

如果bst中沒有重複的值,使用左子樹或者右子樹的值替代,沒有什麼區別,但是在有重複值時,要使用右子樹的值替代。

查詢二叉樹(BST)

今天分享一些關於bst的內容 一 基礎知識點 1 一棵樹最上面的節點稱為根節點,如果乙個節點下面連線多個節點,那麼該節點稱為父節點,它下面的節點稱為子節點。乙個節點可以有0個 1個 或多個子節點,沒有任何子節點的節點稱為葉子節點 2 以某種特定的順序訪問樹中所有的節點稱為樹的遍歷 3 樹可以分為幾個...

二叉查詢樹(BST) 樹

目錄1,定義 二叉查詢樹 binary search tree 又名二叉搜尋樹或二叉排序樹。可以是一顆空樹,或者是具有下列性質的二叉樹 1 若它的左子樹不空,則左子樹上所有結點的指均小於它的根結點的值 2 若它的右子樹不空,則右子樹上所有結點的指均大於它的根結點的值 2,c 實現二叉樹的基本操作 i...

二叉查詢樹 BST

當所有的靜態查詢結構新增和刪除乙個資料的時候,整個結構都需要重建。這對於常常需要在查詢過程中動態改變資料而言,是災難性的。因此人們就必須去尋找高效的動態查詢結構,我們在這討論乙個非常常用的動態查詢樹 二叉查詢樹。二叉查詢樹的特點 下面的圖就是兩棵二叉查詢樹,我們可以總結一下他的特點 1 若它的左子樹...