二叉排序樹的刪除


  在刪除二叉排序樹上某個結點之后,仍然保持二叉排序樹的特性,即:二叉排序樹中任一結點x,其左(右)子樹中任一結點y(若存在)的關鍵字必小(大)於x的關鍵字

 

刪除結點有三種情況

  1.被刪除的結點是葉子

  2.被刪除的結點只有左子樹或者只有右子樹

  3.被刪除的結點既有左子樹,也有右子樹

 

第一種:被刪除的結點是葉子

由於要刪除的結點p即無左子樹,又無右子樹,

因此刪除結點p之后不會破壞二叉排序樹結構的完整性,

只要將其雙親結點f原來指向p的指針改為指向空即可

 

 

第二種:被刪除的結點只有左子樹或者只有右子樹

要刪除的結點p只有左子樹PL或者右子樹PR,

這時候只要將p的左子樹PL或p的右子樹PR

直接作為其雙親結點f 的相應左子樹或右子樹即可


 

第三種:被刪除的結點既有左子樹,也有右子樹

要刪除的結點p只有左子樹PL或者右子樹PR,

第一種方法是:

  要刪除結點p若為其雙親結點f 的右子樹,

  則令p的左子樹PL成為其雙親結點f 的右子樹,

  然后令p的右子樹PR成為中序遍歷下p的直接前驅s的右子樹

  例一:

   

先寫出該樹的中序遍歷順序:CL,C,QL, Q,SL,S,P,PR,F

此時p的直接前驅為S,則刪除P的時候,P的右子樹作為S的右子樹

同時將p的左子樹作為其雙親節點的左子樹即可

  

 

第二種方法是:

令p的中序下的直接前驅s或直接后繼結點代替p結點,

同時刪除其中序下的前驅結點s(或中序下的后繼結點)

 


免責聲明!

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



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