亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C語言二叉排序(搜索)樹實例

2020-05-23 13:38:04
字體:
來源:轉載
供稿:網友

本文實例為大家分享了C語言二叉排序(搜索)樹實例代碼,供大家參考,具體內容如下

/**1.實現了遞歸 非遞歸插入(創建)二叉排序(搜索)樹;分別對應Insert_BinSNode(TBinSNode* T,int k),NonRecursion_Insert_BinSNode(TBinSNode* T,int k);  2.實現了遞歸 非遞歸查找 二叉排序(搜索)樹 ;分別對應Find_BinSNode(TBinSNode *T,int s),NonRecursion_Find_BinSNode(TBinSNode *T,int s);  3. 實現了非遞歸刪除 二叉排序(搜索)樹;分別對應Delete_BinSNode();   4. 實現了遞歸先序、中序、后序遍歷二叉排序(搜索)樹;分別對應Pre_Print_BinSNode(TBinSNode T),In_Print_BinSNode(TBinSNode T),Post_Print_BinSNode(TBinSNode T);    */#include<stdio.h>#include<stdlib.h>typedef struct BinSTreeNode{  int num;  struct BinSTreeNode *lchild,*rchild;}BinSNode,*TBinSNode;int Empty_Tree(TBinSNode T){  if(!T){    return 1;   }else{    return 0;  }}/*---------------------非遞歸方法 二叉排序樹的刪除-----------------*/void Delete_BinSNode(TBinSNode *T,int del){  TBinSNode cur,pre,lt,rblast;   cur=*T;  pre=NULL;  //如果二叉排序樹為空   if(Empty_Tree(cur)){    printf("Sorry,Tree is none");     return;  }//如果二叉排序樹不為空,先找到即將刪除的元素del.這里再次實現一遍查找,當然也可以修改一下Find類的函數   while(cur && cur->num!=del){    if(del>cur->num){      pre=cur;       cur=cur->rchild;    }else{      pre=cur;      cur=cur->lchild;    }  }  if(!cur){    printf("Sorry,you want to delete the node ,which is non-existent");    return;  }  if(cur->num==del){    printf("find the delete node,wait a minute......./n");  }  //如果找到待刪除的結點,立刻判斷該結點有無左子樹  //情況一:待刪除結點無左子樹   if(!cur->lchild){    if(pre==NULL){      cur=*T;      *T=(*T)->rchild;      free(cur);      return;    }    if(pre->lchild && pre->lchild->num==del){      pre->lchild=cur->rchild;      free(cur);      return;    }    if(pre->rchild && pre->rchild->num==del){      pre->rchild=cur->rchild;      free(cur);      return;    }  }   //情況二:待刪除的結點有左子樹。   if(cur->lchild){    lt=cur->lchild;    //情況2.1:該左子樹無右子樹     if(!lt->rchild){      if(pre->lchild && pre->lchild->num==del){        pre->lchild=lt;        free(cur);        return;      }      if(pre->rchild && pre->rchild->num==del){        pre->rchild=lt;        free(cur);        return;      }    }      //情況2.2:該左子樹有右子樹     if(lt->rchild){      while(lt->rchild){        rblast=lt; //該左子樹中最大的結點的前一個結點.         lt=lt->rchild;       }      cur->num=lt->num;      rblast->rchild=lt->lchild;      free(lt);      return;    }    }} /*--------------------遞歸方法 查找 二叉排序樹-------------------*/void Find_BinSNode(TBinSNode T,int s){  if(s==T->num){    printf("%d/n",T->num);    return;  }  if(s>T->num){    Find_BinSNode(T->rchild,s);  }else{    Find_BinSNode(T->lchild,s);  }} /*-------------------非遞歸方法 查找二叉排序樹--------------------*/void NonRecursion_Find_BinSNode(TBinSNode T,int s){  if(Empty_Tree(T)){    printf("Tree is none");    return;   }  while(T && s!=T->num ){    if(s>T->num){      T=T->rchild;    }else{      T=T->lchild;        }    }  if(!T){    printf("Sorry,Not Find!");    exit(0);  }  if(s==T->num){    printf("%d/n",T->num);  }} /*-----------------遞歸方法 創建/插入 二叉排序樹------------------*/ void Insert_BinSNode(TBinSNode *T,int k){// int n;  TBinSNode node;// scanf("%d",&n);  if(Empty_Tree(*T)){    *T=(TBinSNode)malloc(sizeof(BinSNode));     (*T)->num=k;    (*T)->lchild=(*T)->rchild=NULL;    return;  }else{    if(k>(*T)->num){      Insert_BinSNode(&(*T)->rchild,k);     }else{      Insert_BinSNode(&(*T)->lchild,k);     }  }  }/*----------------------先序遍歷二叉排序樹----------------------------------*/void Pre_Print_BinSNode(TBinSNode T){  if(T){    printf("%d ",T->num);    Pre_Print_BinSNode(T->lchild);    Pre_Print_BinSNode(T->rchild);   }}/*-----------------------中序遍歷二叉排序樹-----------------------------------*/void In_Print_BinSNode(TBinSNode T){  if(T){    In_Print_BinSNode(T->lchild);    printf("%d ",T->num);    In_Print_BinSNode(T->rchild);   }}/*-----------------------后序遍歷二叉排序樹-----------------------------------*/void Post_Print_BinSNode(TBinSNode T){  if(T){    Post_Print_BinSNode(T->lchild);    Post_Print_BinSNode(T->rchild);    printf("%d ",T->num);   }}/*---------------------非遞歸 創建/插入 二叉排序樹---------------------------*/void NonRecursion_Insert_BinSNode(TBinSNode *T,int k){  //如果為空的二叉排序樹   TBinSNode cur,p,t;  t=*T;  if(!*T){    *T=(TBinSNode)malloc(sizeof(BinSNode));    (*T)->num=k;    (*T)->lchild=(*T)->rchild=NULL;    return;   }else{     //二叉排序樹不為空。    while(t){      if(k>t->num){        cur=t;        t=t->rchild;      }else{        cur=t;        t=t->lchild;      }     }     p=(TBinSNode)malloc(sizeof(BinSNode));     p->num=k;     p->lchild=p->rchild=NULL;     if(k>cur->num){      cur->rchild=p;     }      if(k<cur->num){      cur->lchild=p;     }  }} int main(void){  TBinSNode T=NULL;  int k,s,del;//創建的 查找的 刪除的   while(scanf("%d",&k) && k){//   Insert_BinSNode(&T,k);    NonRecursion_Insert_BinSNode(&T,k);   }// scanf("%d",&s); // Find_BinSNode(T,s);// NonRecursion_Find_BinSNode(T,s);   Pre_Print_BinSNode(T);  scanf("%d",&del);  Delete_BinSNode(&T,del);  Pre_Print_BinSNode(T);   return 0;} 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av观看网址| 亚洲欧美一区二区三区情侣bbw| 亚洲午夜未删减在线观看| 成人a免费视频| 亚洲精品国产福利| 亚洲综合第一页| 亚洲欧美日韩综合| 久久久www成人免费精品| 国产精国产精品| 久久久久国产精品www| 一色桃子一区二区| 亚洲精品视频免费| 日韩精品在线观看网站| 国产视频久久久| 美女视频黄免费的亚洲男人天堂| 黑人精品xxx一区一二区| 欧美激情区在线播放| 久久久国产影院| 欧美一级大片在线免费观看| 日韩欧美在线免费观看| 国产精品99导航| 在线播放国产一区二区三区| 国内精品视频在线| 亚洲人精选亚洲人成在线| 国产日韩专区在线| 亚洲图片在线综合| 亚洲欧美国产高清va在线播| 91精品国产免费久久久久久| 欧美成年人在线观看| 精品自在线视频| 欧美电影在线观看完整版| 另类色图亚洲色图| 欧美国产日韩一区| 81精品国产乱码久久久久久| 中文字幕在线亚洲| 亚洲精品国产精品乱码不99按摩| 成人免费视频网址| 日韩电影中文字幕av| 欧美美女操人视频| 亚洲欧美综合精品久久成人| 国产视频精品xxxx| 91香蕉嫩草神马影院在线观看| 国产精品爽黄69天堂a| 亚洲精品按摩视频| 日本欧美一级片| 国产精品电影观看| 国产福利精品av综合导导航| 奇门遁甲1982国语版免费观看高清| 日韩精品999| 久久综合伊人77777尤物| 热久久免费国产视频| 精品福利免费观看| 国产精品日本精品| 国产成人精品日本亚洲| 久久夜色精品国产| 高跟丝袜欧美一区| 日韩精品中文字| 久久久久久免费精品| 成人免费在线视频网址| 亚洲区一区二区| 欧美极品少妇xxxxⅹ免费视频| 久久不射热爱视频精品| 亚洲欧美综合另类中字| 欧美xxxx做受欧美| 欧美自拍视频在线观看| 性欧美视频videos6一9| 97国产精品视频人人做人人爱| 亚洲专区国产精品| 原创国产精品91| 91视频九色网站| 最近日韩中文字幕中文| 国产精品视频公开费视频| 欧美精品一区二区免费| 国产精品高清网站| 中文字幕日韩在线播放| 国产亚洲欧美日韩一区二区| 精品精品国产国产自在线| 九九热精品视频国产| 懂色aⅴ精品一区二区三区蜜月| 2019国产精品自在线拍国产不卡| 久久久精品在线| 少妇高潮 亚洲精品| 亚洲精品久久久久中文字幕二区| 少妇激情综合网| 亚洲欧美日韩在线高清直播| 97视频在线播放| 精品中文字幕久久久久久| 91久久国产婷婷一区二区| 久久在线免费观看视频| 热久久这里只有精品| 中日韩美女免费视频网站在线观看| 久久久久久中文| 精品福利在线视频| 最近2019中文字幕mv免费看| 精品国产一区二区三区久久久狼| 精品亚洲男同gayvideo网站| 欧美一区二区三区免费观看| 欧美性xxxxxxxxx| 日韩中文字幕免费| 亚洲成av人片在线观看香蕉| 国产欧美精品一区二区三区-老狼| 国产国语videosex另类| 久久精品视频中文字幕| 亚洲乱码国产乱码精品精天堂| 亚洲精品国精品久久99热| 成人免费视频网| 亚洲裸体xxxx| 大荫蒂欧美视频另类xxxx| 日韩网站免费观看高清| 亚洲精品一区av在线播放| 欧美日本亚洲视频| 午夜精品福利视频| 91精品国产综合久久久久久久久| 午夜精品久久久久久99热| 亚洲高清福利视频| 95av在线视频| 日韩欧美国产高清91| 伦伦影院午夜日韩欧美限制| 久久亚洲私人国产精品va| 亚洲色图五月天| 日韩在线一区二区三区免费视频| 亚洲精品女av网站| 亚洲最大的av网站| 国产精品久久999| 亚洲www在线| 亚洲精品www久久久久久广东| 欧美日韩国产色视频| 国语自产偷拍精品视频偷| 国产视频丨精品|在线观看| 另类视频在线观看| 欧美精品久久久久久久免费观看| 一本久久综合亚洲鲁鲁| 伊人久久久久久久久久久久久| 狠狠干狠狠久久| 精品综合久久久久久97| 91日本在线视频| 成人精品久久av网站| 中文字幕亚洲一区二区三区| 国产精品亚洲视频在线观看| 国产精品亚洲美女av网站| 91成人精品网站| 成人美女免费网站视频| 精品久久久久久亚洲国产300| 亚洲精品成人网| 欧美大片va欧美在线播放| 国产原创欧美精品| 91免费视频国产| 伊人男人综合视频网| 亚洲欧美日本精品| 亚洲精品日韩在线| 高清亚洲成在人网站天堂| 亚洲欧美国产精品| 久久久亚洲天堂| 欧美第一黄网免费网站| 国产精品久久久av| 国产91九色视频| 亚洲一级一级97网| 美女福利精品视频| 国产精品自拍偷拍视频| 精品成人在线视频| 亚洲欧美中文另类| 中文亚洲视频在线| 精品欧美激情精品一区| 精品国产精品三级精品av网址|