日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构——二叉搜索树的C语言实现

發(fā)布時間:2024/7/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构——二叉搜索树的C语言实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.什么是二叉搜索樹?

2.二叉搜索樹的操作

3.二叉搜索樹的C語言實(shí)現(xiàn)

#include<stdio.h> #include<stdlib.h>#define ElementType int typedef struct TreeNode *BinTree; typedef BinTree Position; struct TreeNode{ElementType Data;BinTree Left;BinTree Right; };//1.初始化 BinTree MakeEmpty() {BinTree BT;BT=(BinTree)malloc(sizeof(struct TreeNode));BT->Left=NULL;BT->Right=NULL;return BT; }//2.查找某值,返回元素的結(jié)點(diǎn)指針 Position Find(ElementType X,BinTree BST) {while(BST){if(X>BST->Data){BST=BST->Right;}else if(X<BST->Data){BST=BST->Left;}else{return BST;}}return NULL; }//3.查找最小值所在的結(jié)點(diǎn)指針 Position FindMin(BinTree BST) {while(BST->Left){BST=BST->Left;}return BST; }//4.查找最大值所在的結(jié)點(diǎn)指針 Position FindMax(BinTree BST) {while(BST->Right){BST=BST->Right;}return BST; }//5.插入 BinTree Insert(ElementType X,BinTree BST) {if(!BST){BST=(BinTree)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);}}return BST; }//6.刪除 BinTree Delete(ElementType X,BinTree BST) {Position Tmp;if(!BST){printf("要刪除的元素未找到\n");}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; } int main() {int i;BinTree BST[6];for(i=0;i<6;i++){BST[i]=MakeEmpty();}BST[0]->Data=18;BST[0]->Left=BST[1];BST[0]->Right=BST[2];BST[1]->Data=10;BST[1]->Left=BST[3];BST[1]->Right=BST[4];BST[2]->Data=20;BST[2]->Right=BST[5];BST[3]->Data=7;BST[4]->Data=15;BST[5]->Data=22;printf("%d %d\n",BST[0]->Data,BST[0]->Left->Data);Position BST1;BST1=Find(22,BST[0]);printf("%d\n",BST1->Data);Position BST2;BST2=FindMin(BST[0]);printf("MIN=%d\n",BST2->Data);Position BST3;BST3=FindMax(BST[0]);printf("MAX=%d\n",BST3->Data);BST[0]=Insert(19,BST[0]);printf("%d\n",BST[0]->Right->Left->Data);return 0; }

總結(jié)

以上是生活随笔為你收集整理的数据结构——二叉搜索树的C语言实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。