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

2022-05-02 09:03:11 字數 616 閱讀 6387

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

template

void bst::deletepri(treenode*&node, t x)

else

if(x < node->data)

else

node->data = temp->data;

node->freq = temp->freq;

temp_node = temp->rson;

delete

temp;

if(pre_node !=null)

return

; }

else

}return;}

template

void bst::delete(t x)

**沒有進行很多測試,應該有bug,歡迎指正。

二叉查詢樹的刪除操作

對於二叉樹的刪除操作來說,存在三種情況 1.當刪除節點為葉節點的時候,此時將節點置為空 2.當刪除節點為根節點且該根節點只有乙個子樹的時候,此時需要替換掉刪除元素,最後再進行釋放 3.當刪除節點為根節點且根節點存在兩個子樹的時候,此時我們可以選擇替換左子樹的最大元素,或者右子樹的最小元素 c 如下 ...

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

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

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

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