圖解--二分查找樹


一、定義

   1.若它的左子樹不為空,則左子樹上所有結點的值均小於等於根結點的值;

   2.若它的右子樹不為空,則右子樹上所有結點的值均大於等於根結點的值;

   3.它的左右子樹均為二分查找樹。

 

二、圖解實例

選取一個節點為參照根節點,會發現所有的左側子節點小於等於參照點,右側大於等於參照點。

比如根節點9,  9所有的左側子節點(5、2、7、1、3)都小於等於9.

比如根節點13,13所有的左側子節點(11、10、12)都大於等於13.

 

1、查找

查找節點 10:根節點9開始,10>9 右側,10<13 左側,10<11 左側,找到10.

 

2、插入

插入 子節點 4:4<9 左側,4<5 左側,4>2 右側,4>3 右側

 

 

3、刪除

刪除節點(因為情況有多種,處理邏輯也是比較麻煩。)

A:刪除葉子:好吧就是一個干巴巴的葉子,好辦,找到-刪除。

   刪除 7 ,這個7是葉子,那就找到並刪除

 

 

B:有一個分支的,刪除節點,子節點上提。

  刪除 2節點:找到2 ,刪除2

  再上提子節點 1

 

C:兩個分支,節點刪除,右子樹最小的數代替被刪除節點,

  因為右子樹最多有一個右葉子,重新指定引用。

    刪除 13,13有左右兩個分支:

 

   因為 右分支肯定大於左面分支,所以上提右子節點 15

 

 

 四、其實三已經告訴了我們,會有一種極端情況

二分查找樹就是為了提高查詢效率,而當前這種和我們寫了一堆for循環是一樣的。

為了應對這種情況:又出現了平衡二叉樹--紅黑樹。后面會提到。

 


免責聲明!

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



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