亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 平衡二叉排序樹的綜合操作.cpp

?? 數據結構每章算法
?? CPP
字號:
//* * * * * * * * * * * * * * * * * * * * * * * *
//*CHAPTER          :6  (6_5)                   *
//*PROGRAM          :平衡二叉排序樹的綜合操作   *
//*CONTENT          :Insert,Search              *
//* * * * * * * * * * * * * * * * * * * * * * * *
#include <dos.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define LH 1   //左子樹高
#define EH 0   //左右子樹等高
#define RH -1  //右子樹高
enum BOOL{False,True};
typedef struct //定義記錄的結構
{int keynum;   //在本程序中只含有關鍵字一項
}Record;
typedef struct  BSTNode   //定義平衡二叉樹節點結構
{Record  data;		  //數據域
 int bf;                  //平衡因子
 struct BSTNode *lchild,*rchild; //左右孩子指針域
}BSTNode,*BSTree;
BSTree SearchBST(BSTree,int); //在平衡二叉排序樹中查找元素
BOOL InsertAVL(BSTree &,Record,BOOL&);  //在平衡二叉排序樹中插入元素
void LeftBalance(BSTree &);    //左平衡旋轉處理
void RightBalance(BSTree &);   //右平衡旋轉處理
void InorderBST(BSTree); //中序遍歷二叉排序樹,即從小到大顯示各元素
void R_Rotate(BSTree &); //右旋處理
void L_Rotate(BSTree &); //左旋處理
void main()
{BSTree T,p;
 Record R;
 char ch,keyword,j='y';
 BOOL temp,taller;
 textbackground(3);  //設定屏幕顏色
 textcolor(15);
 clrscr();
 //-------------------------程序說明-------------------------------
 printf("This program will show how to operate to \na Balanced Binary Sort  Tree.\n");
 printf("You can display all elems,search a elem,insert a elem.\n");
 //----------------------------------------------------------------
 T=NULL;
 while(j!='n')
    {printf("1.display\n");
     printf("2.search\n");
     printf("3.insert\n");
     printf("4.exit\n");
     scanf(" %c",&ch); //輸入操作選項
     switch(ch)
      {case '1':if(!T) printf("The BST has no elem.\n"); //此時平衡二叉排序樹空
		else {InorderBST(T);printf("\n");} //中序遍歷二叉樹,即從小到大顯示所有元素
		break;
       case '2':printf("Input the keynumber of elem to be searched(int number):");
		scanf("%d",&R.keynum); //輸入要查找元素的關鍵字
		p=SearchBST(T,R.keynum);
                  //p=NULL:查找不成功;p!=NULL:查找成功,p指向該記錄
		if(!p) printf("The record isn't existed!\n"); //沒有找到
		else printf("The record has been found!\n"); //成功找到
		break;
       case '3':printf("Input the record to be inserted(int number):");
		scanf("%d",&R.keynum); //輸入要插入元素的關鍵字
		temp=InsertAVL(T,R,taller);
	         //temp=True:成功插入該記錄;temp=False:樹中已有與記錄R有相同關鍵字的記錄
                if(!temp) printf("The record has been existed!\n"); //該元素已經存在
		else printf("Sucess to insert!\n"); //成功插入
		break;
       default: j='n';
    }
 }
 printf("The program is over!\nPress any key to shut off the window!\n");
 getchar();getchar();
}
void InorderBST(BSTree T)
{//以中序方式遍歷二叉排序樹T,即從小到大顯示二叉排序樹的所有元素
 if(T->lchild) InorderBST(T->lchild);
 printf("%-4d",T->data.keynum);
 if(T->rchild) InorderBST(T->rchild);
}

BSTree SearchBST(BSTree T,int key)
{//在根指針T所指二叉排序樹中遞歸的查找其關鍵字等于key的元素,若查找成功
 //則返回該元素的地址,若查找不成功,返回地址為NULL
 if((!T)||key==T->data.keynum) return (T);
 else if(key<T->data.keynum) return(SearchBST(T->lchild,key));
 else return(SearchBST(T->rchild,key));
}

BOOL InsertAVL(BSTree &T,Record e,BOOL &taller)
{//若在平衡二叉排序樹T中中不存在和e有相同關鍵字的結點,則插入一個數據元素
 //為e的新結點,并返回True,否則返回False。若因插入而使平衡二叉排序樹失去
 //平衡,則做平衡旋轉處理,布爾變量taller反映T長高與否
 if(!T)      //插入新結點,樹“長高”,置taller為True
   {T=(BSTree)malloc(sizeof(BSTNode));
    T->data=e;
    T->lchild=T->rchild=NULL;
    T->bf=EH;
    taller=True;
   }
 else  
    {if(e.keynum==T->data.keynum)  //樹中已有與e有相同關鍵字的結點
	{taller=False; return False;} //不再插入
     if(e.keynum<T->data.keynum)   //應繼續在*T的左子樹中進行搜索
	{if(!InsertAVL(T->lchild,e,taller)) return False; //未插入
	 if(taller)         //已插入到*T的左子樹中且左子樹“長高”
	   switch(T->bf)    //檢查*T的平衡度
	     {case LH:LeftBalance(T); //原本左子樹比右子樹高,需要做左平衡處理
		      taller=False;
		      break;
	      case EH:T->bf=LH;    //原本左右子樹等高,現因左子樹增高而使樹增高
		      taller=True;
		      break;
	      case RH:T->bf=EH;    //原本右子樹比左子樹高,現左右子樹等高    
		      taller=False;
		      break;
	     }
	}
    else            //應繼續在*T的右子樹中進行搜索
	{if(!InsertAVL(T->rchild,e,taller)) return False;//未插入
	 if(taller)         //已插入到*T的右子樹中且右子樹“長高”
	   switch(T->bf)    //檢查*T的平衡度
	     {case LH:T->bf=EH;  //原本左子樹比右子樹高,現左右子樹等高  
		      taller=False;
		      break;
	      case EH:T->bf=RH;  //原本左右子樹等高,現因右子樹增高而使樹增高
		      taller=True;
		      break;
	      case RH:RightBalance(T);//原本右子樹比左子樹高,需要做右平衡處理
		      taller=False;
		      break;
	     }
	}
   }
 return True;
}
void LeftBalance(BSTree &T)
{//對以指針T所指結點為根的二叉樹做左平衡旋轉處理,本算法結束時,
 //指針T指向新的根結點
 BSTree lc,rd;
 lc=T->lchild;  //lc指向*T的左子樹根結點
 switch(lc->bf) //檢查*T的左子樹的平衡度,并作相應平衡處理 
    {case LH:T->bf=lc->bf=EH; //新結點插入在*T的左孩子的左子樹上,要作單右旋處理
	     R_Rotate(T);
	     break;
     case RH:               //新結點插入在*T的左孩子的右子樹上,要作雙旋處理
             rd=lc->rchild; //rd指向*T的左孩子的右子樹根
	     switch(rd->bf) //修改*T及其左孩子的平衡因子 
		{case LH:T->bf=RH;lc->bf=EH;break;
		 case EH:T->bf=lc->bf=EH;break;
		 case RH:T->bf=EH;lc->bf=LH;break;
		}
	     rd->bf=EH;
	     L_Rotate(T->lchild); //對*T的左子樹作左旋平衡處理

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一级二级三级| 欧美一区二区三区精品| 国产精品自产自拍| 蜜臀av国产精品久久久久| 日韩av中文在线观看| 天堂蜜桃一区二区三区| 日韩精品乱码免费| 九九热在线视频观看这里只有精品| 首页国产欧美日韩丝袜| 日本欧美久久久久免费播放网| 日本不卡一二三| 久久成人久久爱| 不卡在线视频中文字幕| 91小视频免费观看| 欧美日精品一区视频| 欧美二区在线观看| 精品国产成人在线影院| 久久久国际精品| 亚洲乱码精品一二三四区日韩在线 | 蜜桃免费网站一区二区三区| 久久国产三级精品| 国产不卡免费视频| 一本大道久久a久久综合| 制服丝袜亚洲精品中文字幕| 久久久久久久免费视频了| 国产精品理论在线观看| 亚洲成人av电影在线| 国产一本一道久久香蕉| 91麻豆免费视频| 欧美一区二区福利视频| 久久精品人人做人人综合 | 国产精品一区久久久久| 色婷婷av一区| 欧美va日韩va| 一区二区三区视频在线看| 奇米影视在线99精品| 懂色av噜噜一区二区三区av| 色综合天天综合给合国产| 欧美一区二区三区在线观看视频| 国产性色一区二区| 日韩av在线播放中文字幕| 成a人片亚洲日本久久| 欧美tk—视频vk| 亚洲国产一区视频| www.亚洲色图.com| 日韩免费观看高清完整版| 亚洲一区二区五区| 成人免费毛片片v| 欧美精品一区二区三区很污很色的| 亚洲精品v日韩精品| 国产一区二区三区精品欧美日韩一区二区三区 | 看电影不卡的网站| 色天天综合色天天久久| 国产片一区二区| 蜜桃视频免费观看一区| 欧美日韩国产精品成人| 亚洲日本一区二区| 成人激情小说乱人伦| 欧美大白屁股肥臀xxxxxx| 亚洲国产一区二区三区| 色综合天天综合网国产成人综合天| 国产欧美一区二区三区在线看蜜臀| 青青草原综合久久大伊人精品| 色999日韩国产欧美一区二区| 欧美激情在线看| 国产一区999| 国产亚洲精品bt天堂精选| 精品一区二区三区免费| 日韩精品专区在线影院观看| 日韩av二区在线播放| 欧美人与z0zoxxxx视频| 亚洲国产三级在线| 欧美三级中文字幕在线观看| 亚洲一区二区三区四区五区中文| 成年人网站91| 一级特黄大欧美久久久| 91成人免费电影| 亚洲一区精品在线| 9191久久久久久久久久久| 日韩国产欧美视频| 日韩欧美国产一二三区| 国产麻豆视频一区二区| 欧美国产精品专区| www.亚洲激情.com| 亚洲色图色小说| 欧美少妇一区二区| 日韩国产高清在线| 精品国产一区二区精华| 国产精品一区二区黑丝| 国产精品久久777777| 成人av网在线| 一区二区三区四区激情| 欧美另类久久久品| 韩国精品久久久| 国产精品美女久久久久久久网站| 一本色道久久综合亚洲aⅴ蜜桃 | 一区二区三区四区激情| 欧美一区二区精品久久911| 激情五月播播久久久精品| 久久久久久久精| 91成人国产精品| 精品一区二区三区的国产在线播放 | 日韩丝袜情趣美女图片| 国产成人福利片| 亚洲国产精品精华液网站| 欧美久久久久中文字幕| 国产激情视频一区二区三区欧美| 亚洲色图.com| 精品国产欧美一区二区| 91在线精品一区二区| 日本伊人色综合网| 亚洲欧洲成人自拍| 欧美一级高清片| 91香蕉视频mp4| 美女视频黄免费的久久 | 国产亚洲一区二区三区在线观看| 91玉足脚交白嫩脚丫在线播放| 亚洲福利一区二区| 亚洲国产精品激情在线观看| 欧美特级限制片免费在线观看| 国产一区91精品张津瑜| 亚洲一区精品在线| 国产精品乱码久久久久久| 9191久久久久久久久久久| 波多野结衣精品在线| 精品影视av免费| 亚洲一二三四在线观看| 国产精品女同互慰在线看 | 国产高清在线精品| 日韩综合在线视频| 亚洲一区二区成人在线观看| 欧美激情一区二区在线| 日韩精品一区二区三区三区免费| 在线一区二区三区四区| 成人午夜视频免费看| 精品一区二区三区在线播放视频 | 欧美丰满高潮xxxx喷水动漫 | 亚洲v精品v日韩v欧美v专区| 国产精品久久久久久亚洲毛片 | 日本韩国欧美在线| 成人黄色电影在线 | 成人av在线电影| 国产精品99久久久久久有的能看| 男人操女人的视频在线观看欧美| 麻豆精品在线播放| 亚洲国产视频在线| 亚洲电影第三页| 亚洲成人动漫精品| 调教+趴+乳夹+国产+精品| 亚洲一区二区三区四区在线观看| 亚洲柠檬福利资源导航| 亚洲色图欧美在线| 一区二区三区国产精华| 夜夜夜精品看看| 午夜精品福利一区二区蜜股av | 成人精品鲁一区一区二区| 国产精品123| av亚洲精华国产精华| 波多野结衣中文字幕一区| 99久久精品情趣| 欧美影视一区二区三区| 欧美日韩一区二区在线视频| 欧美精品丝袜中出| 欧美电视剧免费观看| 欧美精品一区二区三区蜜臀| 久久久久久一级片| 亚洲人成精品久久久久久| 亚洲综合精品久久| 免费看黄色91| 国产二区国产一区在线观看| 成人午夜视频福利| 色婷婷av久久久久久久| 在线不卡一区二区| 欧美www视频| 亚洲私人黄色宅男| 丝袜诱惑制服诱惑色一区在线观看| 奇米精品一区二区三区四区| 国产激情精品久久久第一区二区| 91麻豆视频网站| 欧美一区二区久久久| 国产精品无人区| 三级欧美在线一区| 国产乱色国产精品免费视频| 色哟哟一区二区在线观看 | 国产成人免费视频一区| 色婷婷狠狠综合| 日韩免费观看高清完整版在线观看 | 欧美日韩一卡二卡三卡| 久久久.com| 日韩影院精彩在线| av一本久道久久综合久久鬼色| 欧美日韩精品是欧美日韩精品| 久久综合色之久久综合| 一区二区三区四区在线免费观看| 日韩成人午夜电影| 91蜜桃视频在线| 欧美精品一区视频| 亚洲午夜视频在线| 北岛玲一区二区三区四区| 日韩一级片网址|