二叉查找樹的刪除


二叉查找樹的刪除分為兩種方式:

二叉查找樹,本質上是一棵排序樹,具體不解釋了。對於二叉樹的刪除操作。有兩種方式:合並刪除和排序刪除:

合並刪除:

圖1  原始二叉樹

合並刪除的本質在於:假如我們要刪除結點A,那么,對於其左右子樹B,C應該怎么辦呢?

方法是:找到A的左子樹中最大值結點(這里是E),實質上是找到左子樹中最右邊的節點。然后將A節點的右子樹合並到E的下面,刪除A即可。即如下圖:

圖2  合並刪除

可以看到,合並的實質是將A的右子樹合並到左子樹上!!!。而且可以看出,合並刪除導致樹的高度發生變化,極其容易導致樹結構的不平衡(樹的平衡性對樹而言是很重要的特性)。

再看復制刪除:

復制刪除:

復制刪除的本質在於復制!!!假如我們要刪除A,本質上,我們只是想讓具有某個值的節點不存在,我們換一種思路,我們不刪除這個結點,而是讓這個節點被覆蓋(被復制)。那么被誰覆蓋呢?被A的左子樹中最大值結點(這里是E),這一點和合並刪除是相同的。復制刪除結點如下:

圖3  復制刪除

復制刪除表面上,沒有改變樹的深度,所以講對於樹的刪除是更優的。

 

 


免責聲明!

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



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