二叉搜索树的插入与删除(C语言)
生活随笔
收集整理的這篇文章主要介紹了
二叉搜索树的插入与删除(C语言)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
代碼如下:
BinTree Insert( BinTree BST, ElementType X ) {if( !BST ){ /* 若原樹(shù)為空,生成并返回一個(gè)結(jié)點(diǎn)的二叉搜索樹(shù) */BST = (BinTree)malloc(sizeof(struct TNode));BST->Data = X;BST->Left = BST->Right = NULL;}else { /* 開(kāi)始找要插入元素的位置 */if( X < BST->Data )BST->Left = Insert( BST->Left, X ); /*遞歸插入左子樹(shù)*/else if( X > BST->Data )BST->Right = Insert( BST->Right, X ); /*遞歸插入右子樹(shù)*//* else X已經(jīng)存在,什么都不做 */}return BST; }BinTree Delete( BinTree BST, ElementType X ) { Position Tmp; if( !BST ) printf("要?jiǎng)h除的元素未找到"); else {if( X < BST->Data ) BST->Left = Delete( BST->Left, X ); /* 從左子樹(shù)遞歸刪除 */else if( X > BST->Data ) BST->Right = Delete( BST->Right, X ); /* 從右子樹(shù)遞歸刪除 */else { /* BST就是要?jiǎng)h除的結(jié)點(diǎn) *//* 如果被刪除結(jié)點(diǎn)有左右兩個(gè)子結(jié)點(diǎn) */ if( BST->Left && BST->Right ) {/* 從右子樹(shù)中找最小的元素填充刪除結(jié)點(diǎn) */Tmp = FindMin( BST->Right );BST->Data = Tmp->Data;/* 從右子樹(shù)中刪除最小元素 */BST->Right = Delete( BST->Right, BST->Data );}else { /* 被刪除結(jié)點(diǎn)有一個(gè)或無(wú)子結(jié)點(diǎn) */Tmp = BST; if( !BST->Left ) /* 只有右孩子或無(wú)子結(jié)點(diǎn) */BST = BST->Right; else /* 只有左孩子 */BST = BST->Left;free( Tmp );}}}return BST; }總結(jié)
以上是生活随笔為你收集整理的二叉搜索树的插入与删除(C语言)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 三星成为Q3全球销量第一的电视品牌!连续
- 下一篇: AVL树的旋转与插入(C语言)