国产探花免费观看_亚洲丰满少妇自慰呻吟_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;  }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蓝山县| 仁布县| 淮北市| 左云县| 科尔| 吉安县| 桂阳县| 鹰潭市| 策勒县| 黄陵县| 屯门区| 哈尔滨市| 民和| 双流县| 长武县| 宾川县| 静宁县| 烟台市| 岳西县| 星座| 晋州市| 武清区| 南漳县| 青阳县| 罗城| 达孜县| 福海县| 廊坊市| 巢湖市| 和硕县| 青阳县| 保定市| 旬邑县| 黑龙江省| 新巴尔虎右旗| 建水县| 莱阳市| 闽侯县| 琼海市| 宜兰县| 定结县|