二叉排序树(搜索树BST)-详解结点的删除
生活随笔
收集整理的這篇文章主要介紹了
二叉排序树(搜索树BST)-详解结点的删除
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在二叉排序樹中刪除一個結點時,需保證刪除后的二叉樹仍然是二叉排序樹。為討論方便,假定被刪除結點為p,其雙親結點為f。刪除的過程可按下述的兩種情況分別處理。
在這里我們用紅色三角形表示我們要刪除的結點,藍色表示我們要改變指針的指向,如果藍色是圓圈,則說明是新根。
(1)如果被刪除的結點沒有左子樹,則只需把結點f指向p的指針改為指向p的右子樹。
情況一:
情況二:
情況三:
(2)如果被刪除的結點p有左子樹,則刪除結點p時,從結點p的左子樹中選擇結點值最大的結點s(其實就是p的左子樹中最右下角的結點,該結點s可能有左子樹,但右子樹一定為空),用結點s替換結點p(把s的數據復制到p中),再將指向結點s的指針改為指向結點s的左子樹即可。
情況一:
情況二:
代碼如下:
總結
以上是生活随笔為你收集整理的二叉排序树(搜索树BST)-详解结点的删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图的最小生成树和最短路径算法思路总结(P
- 下一篇: 平衡二叉树(AVL树)-详解平衡调整