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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

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

?? 經(jīng)典數(shù)據(jù)結(jié)構(gòu)中較難的平衡二叉排序樹的操作
?? CPP
字號(hào):
//* * * * * * * * * * * * * * * * * * * * * * * *
//*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 //定義記錄的結(jié)構(gòu)
{int keynum;   //在本程序中只含有關(guān)鍵字一項(xiàng)
}Record;
typedef struct  BSTNode   //定義平衡二叉樹節(jié)點(diǎn)結(jié)構(gòu)
{Record  data;		  //數(shù)據(jù)域
 int bf;                  //平衡因子
 struct BSTNode *lchild,*rchild; //左右孩子指針域
}BSTNode,*BSTree;
BSTree SearchBST(BSTree,int); //在平衡二叉排序樹中查找元素
BOOL InsertAVL(BSTree &,Record,BOOL&);  //在平衡二叉排序樹中插入元素
void LeftBalance(BSTree &);    //左平衡旋轉(zhuǎn)處理
void RightBalance(BSTree &);   //右平衡旋轉(zhuǎn)處理
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);  //設(shè)定屏幕顏色
 textcolor(15);
 clrscr();
 //-------------------------程序說(shuō)明-------------------------------
 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); //輸入操作選項(xiàng)
     switch(ch)
      {case '1':if(!T) printf("The BST has no elem.\n"); //此時(shí)平衡二叉排序樹空
		else {InorderBST(T);printf("\n");} //中序遍歷二叉樹,即從小到大顯示所有元素
		break;
       case '2':printf("Input the keynumber of elem to be searched(int number):");
		scanf("%d",&R.keynum); //輸入要查找元素的關(guān)鍵字
		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); //輸入要插入元素的關(guān)鍵字
		temp=InsertAVL(T,R,taller);
	         //temp=True:成功插入該記錄;temp=False:樹中已有與記錄R有相同關(guān)鍵字的記錄
                if(!temp) printf("The record has been existed!\n"); //該元素已經(jīng)存在
		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所指二叉排序樹中遞歸的查找其關(guān)鍵字等于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有相同關(guān)鍵字的結(jié)點(diǎn),則插入一個(gè)數(shù)據(jù)元素
 //為e的新結(jié)點(diǎn),并返回True,否則返回False。若因插入而使平衡二叉排序樹失去
 //平衡,則做平衡旋轉(zhuǎn)處理,布爾變量taller反映T長(zhǎng)高與否
 if(!T)      //插入新結(jié)點(diǎn),樹“長(zhǎng)高”,置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有相同關(guān)鍵字的結(jié)點(diǎn)
	{taller=False; return False;} //不再插入
     if(e.keynum<T->data.keynum)   //應(yīng)繼續(xù)在*T的左子樹中進(jìn)行搜索
	{if(!InsertAVL(T->lchild,e,taller)) return False; //未插入
	 if(taller)         //已插入到*T的左子樹中且左子樹“長(zhǎng)高”
	   switch(T->bf)    //檢查*T的平衡度
	     {case LH:LeftBalance(T); //原本左子樹比右子樹高,需要做左平衡處理
		      taller=False;
		      break;
	      case EH:T->bf=LH;    //原本左右子樹等高,現(xiàn)因左子樹增高而使樹增高
		      taller=True;
		      break;
	      case RH:T->bf=EH;    //原本右子樹比左子樹高,現(xiàn)左右子樹等高    
		      taller=False;
		      break;
	     }
	}
    else            //應(yīng)繼續(xù)在*T的右子樹中進(jìn)行搜索
	{if(!InsertAVL(T->rchild,e,taller)) return False;//未插入
	 if(taller)         //已插入到*T的右子樹中且右子樹“長(zhǎng)高”
	   switch(T->bf)    //檢查*T的平衡度
	     {case LH:T->bf=EH;  //原本左子樹比右子樹高,現(xiàn)左右子樹等高  
		      taller=False;
		      break;
	      case EH:T->bf=RH;  //原本左右子樹等高,現(xiàn)因右子樹增高而使樹增高
		      taller=True;
		      break;
	      case RH:RightBalance(T);//原本右子樹比左子樹高,需要做右平衡處理
		      taller=False;
		      break;
	     }
	}
   }
 return True;
}
void LeftBalance(BSTree &T)
{//對(duì)以指針T所指結(jié)點(diǎn)為根的二叉樹做左平衡旋轉(zhuǎn)處理,本算法結(jié)束時(shí),
 //指針T指向新的根結(jié)點(diǎn)
 BSTree lc,rd;
 lc=T->lchild;  //lc指向*T的左子樹根結(jié)點(diǎn)
 switch(lc->bf) //檢查*T的左子樹的平衡度,并作相應(yīng)平衡處理 
    {case LH:T->bf=lc->bf=EH; //新結(jié)點(diǎn)插入在*T的左孩子的左子樹上,要作單右旋處理
	     R_Rotate(T);
	     break;
     case RH:               //新結(jié)點(diǎn)插入在*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); //對(duì)*T的左子樹作左旋平衡處理

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区三区| 中文字幕一区二区不卡| av电影在线不卡| 国内精品写真在线观看| 亚洲免费成人av| 中文字幕不卡在线观看| 一区二区三区91| 一区二区在线观看视频 | 色综合一个色综合亚洲| 国产激情偷乱视频一区二区三区| 日韩黄色免费电影| 亚洲午夜久久久久久久久电影院| 国产精品电影一区二区三区| 精品久久久久久久久久久院品网| 欧美挠脚心视频网站| 欧美色国产精品| 在线免费不卡视频| 欧美色欧美亚洲另类二区| 欧美最猛黑人xxxxx猛交| 欧美中文字幕一区| 欧美日韩中文精品| 51精品久久久久久久蜜臀| 91精品中文字幕一区二区三区| 欧美日韩精品福利| 91精品国产乱码| 久久综合999| 日韩毛片一二三区| 亚洲成人免费电影| 精品伊人久久久久7777人| 成人在线视频一区二区| 菠萝蜜视频在线观看一区| 91视视频在线直接观看在线看网页在线看| aaa国产一区| 在线成人免费观看| 亚洲精品一区二区三区香蕉| 一区二区三区中文在线| 亚洲理论在线观看| 蜜桃精品视频在线| 成人免费va视频| 欧美日韩国产一级片| 久久久久久99久久久精品网站| 亚洲色图制服丝袜| 久久99精品国产.久久久久| 成人综合婷婷国产精品久久| 91亚洲永久精品| 亚洲精品在线电影| 日韩va亚洲va欧美va久久| 99国产欧美久久久精品| 日韩一本二本av| 一区二区三区在线高清| 国产精品一区二区三区四区| 欧美日韩在线播| 亚洲免费观看高清| 成人免费的视频| 久久久久久久国产精品影院| 性久久久久久久久| 欧美三日本三级三级在线播放| 欧美激情在线免费观看| 久久 天天综合| 欧美一级专区免费大片| 日本亚洲一区二区| 欧美日韩成人综合| 夜夜爽夜夜爽精品视频| 99re视频精品| 中文字幕一区二区三区在线播放 | av中文字幕一区| 国产欧美日韩在线观看| 丁香一区二区三区| 国产欧美精品一区aⅴ影院 | 国产精品亚洲成人| 欧美激情在线一区二区| 成人av资源在线观看| 中文字幕在线观看不卡视频| 99久久久精品免费观看国产蜜| 中文字幕在线不卡一区二区三区| 91同城在线观看| 亚洲国产va精品久久久不卡综合| 在线观看国产91| 亚洲国产精品一区二区www在线| 欧美综合色免费| 免费高清在线一区| 国产午夜精品一区二区三区嫩草| 国产精品自在欧美一区| 亚洲免费观看视频| 精品免费日韩av| bt7086福利一区国产| 丝袜亚洲精品中文字幕一区| 久久视频一区二区| 91丨porny丨国产入口| 日本不卡不码高清免费观看| 国产调教视频一区| 色妞www精品视频| 国产又粗又猛又爽又黄91精品| 久久久噜噜噜久噜久久综合| 色婷婷综合中文久久一本| 美洲天堂一区二卡三卡四卡视频| 一区二区三区在线不卡| 欧美浪妇xxxx高跟鞋交| 高潮精品一区videoshd| 天天综合网天天综合色| 欧美极品少妇xxxxⅹ高跟鞋| 91精品国产福利| 91捆绑美女网站| 国产成人av一区二区三区在线 | 色狠狠色噜噜噜综合网| 国产福利一区在线| 精品一区二区免费| 亚洲v中文字幕| 亚洲欧美日韩国产综合| 国产三级久久久| 久久久.com| 久久久久97国产精华液好用吗 | 欧美tickling挠脚心丨vk| 91蜜桃视频在线| 99国产精品久| 一本色道a无线码一区v| 91美女蜜桃在线| 欧洲亚洲精品在线| 欧美日韩激情在线| 日韩视频一区二区| 欧美一区二区精品| 日韩美女视频在线| 久久婷婷久久一区二区三区| 欧美精品一区二区三区四区 | 91福利小视频| 在线电影一区二区三区| 日韩欧美高清一区| 精品少妇一区二区三区免费观看 | 91国产精品成人| 欧美精品久久99| 精品美女一区二区| 2欧美一区二区三区在线观看视频| 久久综合国产精品| 亚洲免费av高清| 日韩va欧美va亚洲va久久| 精品影视av免费| 欧美中文字幕一区| 国产午夜一区二区三区| 亚洲成人激情自拍| 国产a久久麻豆| 欧美日韩高清在线| 久久久91精品国产一区二区三区| 中文字幕亚洲精品在线观看| 日韩不卡手机在线v区| 97超碰欧美中文字幕| 欧美精品亚洲二区| 国产精品初高中害羞小美女文| 亚洲自拍欧美精品| av激情综合网| 日韩精品一区二区三区视频| 亚洲欧美日韩中文播放| 加勒比av一区二区| 欧美日韩在线一区二区| 欧美国产精品中文字幕| 男人的天堂亚洲一区| 欧美色综合久久| 日韩美女精品在线| 成年人国产精品| 国产精品久久久久久久久免费相片 | 美女免费视频一区二区| 欧美欧美午夜aⅴ在线观看| 亚洲精品视频在线| 99久久国产综合精品色伊| 久久综合狠狠综合久久综合88| 免费一区二区视频| 5858s免费视频成人| 亚洲h在线观看| 欧美人牲a欧美精品| 日韩av一区二区三区四区| 99视频国产精品| 成人欧美一区二区三区| 色综合天天狠狠| 亚洲午夜久久久久久久久电影网 | 大桥未久av一区二区三区中文| 国产亚洲欧美在线| 成人黄动漫网站免费app| 国产精品视频麻豆| 99久久亚洲一区二区三区青草| 欧美激情中文字幕| 91日韩在线专区| 午夜私人影院久久久久| 日韩欧美中文字幕精品| 国产毛片精品视频| 亚洲另类在线一区| 制服丝袜在线91| 国产乱人伦精品一区二区在线观看| 国产欧美一区二区三区在线老狼| 成人福利视频网站| 婷婷夜色潮精品综合在线| 久久久久久毛片| 欧美午夜寂寞影院| 老鸭窝一区二区久久精品| 国产精品久久久久久一区二区三区 | 久久久久亚洲综合| 欧洲视频一区二区| 国内精品视频666| 日韩成人一级片| 综合电影一区二区三区| 日韩欧美在线123| 色婷婷久久久综合中文字幕|