国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

二叉搜索樹的插入和刪除

2019-11-08 20:27:53
字體:
來源:轉載
供稿:網友
typedef struct TreeNode *BinTree;  typedef BinTree Position;   struct TreeNode{      ElementType Data;      BinTree Left;      BinTree Right;   };   BinTree BST; BinTree Insert(ElementType X,BinTree BST)//二叉搜索樹的插入算法{	if(!BST){//若原樹為空,生成并返回一個結點的二叉搜索樹		BST=malloc(sizeof(struct TreeNode));		BST->Data=X;		BST->Left=BST->Right=NULL;		}else//開始找要插入元素的位置		if(X<BST->Data)			BST->Left=Insert(X,BST->Left);//遞歸插入左子樹		else if(X>BST->Data)			BST->Right=Insert(X,BST->Right);//遞歸插入右子樹	 	 	//else X已經存在,什么都不做	return BST; }BinTree Delete(ElementType X,BinTree BST)//二叉搜索樹的刪除算法{	Position Tmp;	if(!BST) PRintf("要刪除的元素未找到");	else if(X<BST->Data)			BST->Left=Delete(X,BST->Left);//左子樹遞歸刪除	else if(X>BST->Data)			BST->Right=Delete(X,BST->Right);//右子樹遞歸刪除	else//找到要刪除的結點		 if(BST->Left&&BST->Right){//被刪除結點有左右兩個結點		 	Tmp=FindMin(BST->Right);			 		//在右子樹中找最小的元素填充刪除結點			BST->Data=Tmp->Data;			BST->Right=Delete(BST->Data,BST->Right);					//在刪除結點的右子樹中刪除最小元素 		 }else{//被刪除結點有一個或無子結點		 	Tmp=BST;			if(!BST->Left)//有右孩子或無子結點				BST=BST->Right;			else if(!BST->Right)//有左孩子或無子結點				BST=BST->Left;			free(Tmp); 		 }	return BST;  }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 容城县| 乐陵市| 屏南县| 普兰店市| 手机| 平山县| 临澧县| 北京市| 鹿泉市| 水富县| 巴东县| 遂川县| 如东县| 中牟县| 宜昌市| 兴城市| 庆安县| 云霄县| 辽阳县| 株洲县| 敖汉旗| 康乐县| 郴州市| 中宁县| 喀喇| 玉门市| 河南省| 竹北市| 珲春市| 措勤县| 琼海市| 宁明县| 宁安市| 乌苏市| 桃源县| 祁阳县| 鄯善县| 龙山县| 涟水县| 乃东县| 山东省|