二叉查詢樹的刪除操作

2021-08-31 20:45:37 字數 1178 閱讀 3455

對於二叉樹的刪除操作來說,存在三種情況

**1.**當刪除節點為葉節點的時候,此時將節點置為空

**2.**當刪除節點為根節點且該根節點只有乙個子樹的時候,此時需要替換掉刪除元素,最後再進行釋放

**3.**當刪除節點為根節點且根節點存在兩個子樹的時候,此時我們可以選擇替換左子樹的最大元素,或者右子樹的最小元素

c**如下

tree de_tree

(item data, tree t)

//二叉樹元素的刪除

else}if

(!ftree)

//如果沒有找到要刪除的元素的話 直接返回t

return t;

///刪除的第一種情況 當找到的元素為葉節點的時候if(

!ftree->lchild &&

!ftree->rchild)

else

if(ftree == parent->lchild)

//該葉節點為左子樹

else

return t;

}///刪除的第二種情況 左子樹或右子樹為空

elseif(

!ftree->lchild ||

!ftree->rchild)

else

free

(ftree)

;return t;

}///刪除的第三種情況 也就是當左子樹和右子樹都不為空的情況下進行刪除

///此時可以選擇將刪除元素替換為左子樹的最大值和右子樹的最小值

else

ftree->element = curtree->element;

//交換最大值

if(parent == ftree)

//表示左子樹的最大值為要刪除元素的左子樹

parent->lchild = curtree->lchild;

//跳過該元素

else

parent->rchild = curtree->lchild;

//因為已經交換了最大值,那麼我們就需要跳過該節點

free

(curtree)

;return t;

}}

**已經很詳細的解釋了如何進行操作的,祝大家學習順利!

二叉樹的新增 刪除 查詢操作

binarytree類 package tree public class binarytree,value 獲取樹中元素的個數 public int size 向樹中新增元素key value public void put key key,value value 向指定的樹x中新增key val...

二叉查詢樹中元素的刪除操作

關於二叉查詢樹的建立,插入,遍歷 記住二叉查詢樹的中序遍歷是所有元素由大到小排序結果 等操作,博主 c小加 寫的很詳細了,我主要補充bst的刪除操作。刪除操作主要難在對左右子節點都非空的節點的刪除操作,這裡可以找到該節點右節點中的最小值,即右子節點中的最左子樹。找到後和需要刪除的節點交換data等資...

二叉查詢樹(二叉排序樹)建立,插入,刪除操作。

尋找節點就是直接依據數值的大小。從root節點開始遍歷,大於當前遍歷節點就向它的右子樹查詢,相反則查詢它的左子樹。然後返回。直接依據root節點,遍歷到最右就是最大節點,遍歷到最左,就是最小節點。插入節點我這裡插入的節點都會成為葉子節點。依據大小的關係向下遍歷,遍歷到最後的節點,然後插入就能夠了。這...