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

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

?? 1.cpp

?? 二叉樹(shù)抽象數(shù)據(jù)類(lèi)型的實(shí)現(xiàn) 問(wèn)題說(shuō)明:數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)二叉樹(shù)具體函數(shù)功能的實(shí)現(xiàn); 以及相關(guān)操作。
?? CPP
字號(hào):
//*****************************
#include<stdio.h>             //
#include<string.h>            //
#include<malloc.h>			  //
#include<stdlib.h>            //
#define NULL 0                //
#define OK 1                  //
#define ERROR 0               //
#define OVERFLOW 0            //
#define TElemType int         //
#define QElemType BiTree      //
//*****************************

typedef struct BiTNode{
	TElemType data;
	struct BiTNode *lchild,*rchild;				 //左右孩子指針
}BiTNode,*BiTree;

InitBiTree(BiTree &T){						
//創(chuàng)建空樹(shù)
		T=NULL;                              
		return OK;
}//InitBiTree

DestroyBiTree(BiTree &T){
//銷(xiāo)毀二叉樹(shù)
	if(T)
		delete(T);								//銷(xiāo)毀根節(jié)點(diǎn)
		DestroyBiTree(T->lchild);				//銷(xiāo)毀左子樹(shù)
	    DestroyBiTree(T->rchild);				//銷(xiāo)毀右子樹(shù)
        return OK;
}//DestroyBiTree

CreatBiTree(BiTree &T,int definition){
//按先序次序輸入二叉樹(shù)中節(jié)點(diǎn)的值,空格字符表示空樹(shù)

//構(gòu)造二叉鏈表表示的二叉樹(shù)T
	if(definition=1){
		TElemType nodedata;
		printf("Enter the data of the tree node:");
		scanf("%d",&nodedata);
		if(nodedata==99)T=NULL;
		else{
			if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
		    T->data=nodedata;                  //生成根節(jié)點(diǎn)
			CreatBiTree(T->lchild,1);		   //構(gòu)造左子樹(shù)
			CreatBiTree(T->rchild,1);		   //構(gòu)造右子樹(shù)
		}
	}
	return OK;
}//CreatBiTree

void ClearBiTree(BiTree &T){
//清空二叉樹(shù)
	if(T){
		ClearBiTree(T->lchild);					//清空左子樹(shù) 
		ClearBiTree(T->rchild);				    //清空右子樹(shù) 
		free(T);
		T=NULL;
	}
}//ClearBiTree

BiTreeDepth(BiTree &T){
//求二叉樹(shù)深度
	int LeftBiTreedepth,RightBiTreedepth;		 //設(shè)左右兩個(gè)深度/層次計(jì)數(shù)器
	if(T==NULL)
		return (0);								//當(dāng)前結(jié)點(diǎn)指針為空則立即返回
	else{
		LeftBiTreedepth=BiTreeDepth(T->lchild); //遍歷當(dāng)前結(jié)點(diǎn)左子樹(shù)
        RightBiTreedepth=BiTreeDepth(T->rchild);//遍歷當(dāng)前結(jié)點(diǎn)右子樹(shù)
		if(LeftBiTreedepth<=RightBiTreedepth)   //從葉子起計(jì)數(shù)
			return (RightBiTreedepth+1);
		else
			return (LeftBiTreedepth+1);
	}
}//BiTreeDepth							

BiTree Root(BiTree &T){                         
//返回根結(jié)點(diǎn) 
	if(T!=NULL){
		return (T);
	}
	else
		return 0;
}//Root

int EQ(BiTree &T,int e){						
//判斷結(jié)點(diǎn)是否在樹(shù)中
	return (T->data)==e?OK:ERROR;
}

int Value(BiTree &T,TElemType e){				
//e是樹(shù)中的結(jié)點(diǎn),返回節(jié)點(diǎn)值
	if(T!=NULL){
		if(!EQ(T,e)){
		    Value(T->lchild,e);
			if(!EQ(T->lchild,e))
			Value(T->rchild,e);
		}
		return (T->data);
	}else return (0);
}//Value

int Assign(BiTree &T,TElemType e,TElemType value){
//e是樹(shù)中的結(jié)點(diǎn),將e賦值為value
    if(T!=NULL){
		if(!EQ(T,e)){
			EQ(T->lchild,e);
			EQ(T->rchild,e);
		}else T->data=value;
		return (T->data);
	}else return (0);
}//Assign

int PrintfElement(TElemType e){
//輸出e的值
	printf("%d",e);
	printf("->");
	return OK;
}

PreOrderTraverse(BiTree &T,int Visit(TElemType e)){
//采用二叉鏈表存儲(chǔ)結(jié)構(gòu),visit是對(duì)應(yīng)數(shù)據(jù)元素操作的函數(shù)
//先序遍歷二叉樹(shù)T的遞規(guī)算法,對(duì)數(shù)據(jù)的每個(gè)元素都調(diào)用函數(shù)visit
	if(T!=NULL){
		if(Visit(T->data))
			if(PreOrderTraverse(T->lchild,Visit))
				if(PreOrderTraverse(T->rchild,Visit))
					return OK;
		return ERROR;
	}else return OK;
}//PreOrderTraverse

InOrderTraverse(BiTree &T,int Visit(TElemType e)){
//采用二叉鏈表存儲(chǔ)結(jié)構(gòu),visit是對(duì)應(yīng)數(shù)據(jù)元素操作的函數(shù)
//中序遍歷二叉樹(shù)T的遞規(guī)算法,對(duì)數(shù)據(jù)的每個(gè)元素都調(diào)用函數(shù)visit
	if(T!=NULL){
		if(InOrderTraverse(T->lchild,Visit))
			if(Visit(T->data))
				if(InOrderTraverse(T->rchild,Visit))
					return OK;
		return ERROR;
	}else return OK;
}//InOrderTraverse

PostOrderTraverse(BiTree &T,int Visit(TElemType e)){
//采用二叉鏈表存儲(chǔ)結(jié)構(gòu),visit是對(duì)應(yīng)數(shù)據(jù)元素操作的函數(shù)
//后序遍歷二叉樹(shù)T的遞規(guī)算法,對(duì)數(shù)據(jù)的每個(gè)元素都調(diào)用函數(shù)visit
	if(T!=NULL){
		if(PostOrderTraverse(T->lchild,Visit))
			if(PostOrderTraverse(T->rchild,Visit))
				if(Visit(T->data))
					return OK;
		return ERROR;
	}else return OK;
}//PostOrderTraverse

//------------------------------------------------------------------
//創(chuàng)建隊(duì)列
typedef struct QNode{
	QElemType data;
	struct QNode *next;
}QNode,*QueuePtr;

typedef struct{
	QueuePtr front;									//隊(duì)頭指針 
	QueuePtr rear;								    //對(duì)尾指針 
}LinkQueue;

InitQueue(LinkQueue&Q){
//構(gòu)造一個(gè)空隊(duì)列Q
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));     //存儲(chǔ)內(nèi)存分配失敗
if(!Q.front) exit(OVERFLOW);
Q.front->next=NULL;
return OK;
}

DestroyQueue (LinkQueue&Q){
//銷(xiāo)毀隊(duì)列Q
	while(Q.front){
		Q.rear=Q.front->next;
		free(Q.front);
		Q.front=Q.rear;
	}
	return OK;
}

EnQueue(LinkQueue&Q,QElemType e){
//插入元素e為Q的新的隊(duì)尾元素
	QueuePtr p;
	p=(QueuePtr)malloc(sizeof(QNode));				//存儲(chǔ)內(nèi)存分配失敗	
	if(!p) exit(OVERFLOW);
	p->data=e; p->next=NULL;
	Q.rear->next=p;
	Q.rear=p;
	return OK;
}

QueueEmpty(LinkQueue &Q){
//判斷隊(duì)列是否為空
	return Q.front==Q.rear?OK:ERROR;
}

DeQueue(LinkQueue &Q,QElemType &e){
//若隊(duì)列不為空,則刪除Q的隊(duì)頭元素,用e返回其值,并返回OK
//否則返回ERROR
if(Q.front==Q.rear) return ERROR;
QueuePtr p;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p) Q.rear=Q.front;
free(p);
return OK;
}

LevelOrderTraverse(BiTree &T, int Visit(TElemType e)){ 
//層序遍歷二叉樹(shù) 
if(T!=NULL){
	LinkQueue Q;
	InitQueue(Q);									//建一個(gè)空隊(duì)(初始化隊(duì)列) 
	
	QElemType p;
	EnQueue(Q,T);									//將一個(gè)結(jié)點(diǎn)插入隊(duì)尾的函數(shù)
   while(!QueueEmpty(Q)) { 
	 DeQueue(Q, p);									//隊(duì)首結(jié)點(diǎn)出隊(duì)(送入p)
	 Visit(p->data); 
	if(p->lchild) EnQueue(Q,T->lchild);				//p的左孩子入隊(duì)
    if(p->rchild) EnQueue(Q,T->rchild);				//p的右孩子入隊(duì)
   } 
}
    return OK;
}//LevelOrderTraverse 

IsOrNotInTree(BiTree &T,BiTree &c){
//判斷兩個(gè)樹(shù)是否相交
	if(T!=NULL&&c!=NULL){
		if(!EQ(T,c->data)){
			EQ(T->lchild,c->data);
			EQ(T->rchild,c->data);
		}else return 1;	
	}else return 0;
}

BiTree EQQ(BiTree &T,int e){
//返回指向結(jié)點(diǎn)的指針
	if(T!=NULL){
		if(!EQ(T,e)){
		    EQQ(T->lchild,e);
			  if(!EQ(T->lchild,e)) 
			   EQQ(T->rchild,e);
		}
		return (T);
	}
}

InsertChild(BiTree &T,BiTree &p,int LR,BiTree &c){
//插入c為T(mén)的子樹(shù)..
	BiTree pchild;
	if(T!=NULL&&c!=NULL&&c->rchild==NULL&&!IsOrNotInTree(T,c)){
		if(LR){
			pchild=p->rchild;
			p->rchild=c;
			c->rchild=pchild;
		}
		else{
			pchild=p->lchild;
			p->lchild=c;
			c->rchild=pchild;
		}
	}
	return 0;
}//InsertChild

DeleteChild(BiTree &T,BiTree &p, int LR){
//刪除T的子樹(shù)..
	if(LR){
			ClearBiTree(p->rchild);
			p->rchild=NULL;
		}
	else if(LR==0){
			ClearBiTree(p->lchild);
			p->lchild=NULL;}
	else
		return ERROR;
}//DeleteChild


main()
{
	printf("\n");
	printf("********************二叉樹(shù)*******************");
	printf("\n");
	printf("Build the tree:\n");
	printf("The num(99) is NULL:\n");
	
	BiTree T=NULL;
    CreatBiTree(T,1);
	printf("T tree has been built:\n");

	printf("***************************\n");
	printf("The traverse of the tree:\n");
   	printf("***************************\n");
	printf("PreOrderTraverse The BiTree:\n");
    PreOrderTraverse(T,PrintfElement);

	printf("\n");
	printf("InOrderTraverse The BiTree:\n");
	InOrderTraverse(T,PrintfElement);

	
	printf("\n");
	printf("PostOrderTraverse The BiTree:\n");
	PostOrderTraverse(T,PrintfElement);

	printf("\n");
	printf("LevelOrderTraverse The BiTree:\n");
	LevelOrderTraverse(T,PrintfElement);

	printf("\n");
	printf("*************************\n");
	printf("The depth of the tree is:\n");
	printf("**************************\n");
	int BiTreedepth;
	BiTreedepth=BiTreeDepth(T);
	printf("%d\n",BiTreedepth);

	printf("\n");
	printf("***************************\n");
	printf("the data of the tree root:\n");	
	printf("***************************\n");
	BiTree root=Root(T);
	printf("%d\n",root->data);

	printf("\n");
	printf("enter the data of the node:\n");
	int e,f;
	scanf("%d",&e);
	f=Value(T,e);
	printf("***************************\n");
	printf("the data of the node is:\n");
	printf("***************************\n");
	printf("%d\n",f);

	int m,n,g;
	printf("enter the data of the node:\n");
	scanf("%d",&m);
	printf("enter the data you want to change:\n");
    scanf("%d",&n);
	g=Assign(T,m,n);
	printf("***************************\n");
	printf("change the data of the node:\n");
	printf("***************************\n");
	printf("%d",g);

	printf("\n");
    printf("build another tree:\n");
    BiTree c;
	CreatBiTree(c,1);
	printf("T tree has been built:\n");

/*	int t;
	printf("Enter the t:\n");
	scanf("%d",&t);
	BiTree p;
	p=EQQ(T,t);*/

    InsertChild(T,T->lchild,1,c);
	printf("***************************\n");
	printf("insert the child:\n");
	printf("the T tree changed:\n");
	printf("***************************\n");
    PreOrderTraverse(T,PrintfElement);

	printf("\n");
	DeleteChild(T,T->lchild,1);
	printf("***************************\n");
	printf("delete the child:\n");
	printf("the T tree changed:\n");
	printf("***************************\n");
	PreOrderTraverse(T,PrintfElement);
    return 0;
}
        

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲欧美在线观看| 精品久久久久久综合日本欧美| 日韩中文字幕一区二区三区| 久久免费的精品国产v∧| 欧美午夜不卡在线观看免费| 国产伦理精品不卡| 亚洲一区二区三区四区五区黄 | 色婷婷国产精品久久包臀 | 972aa.com艺术欧美| 秋霞午夜av一区二区三区| 国产精品第13页| 2019国产精品| 91精品国产综合久久久久久漫画 | 国产午夜精品一区二区| 91精品欧美综合在线观看最新| 本田岬高潮一区二区三区| 久久99在线观看| 五月综合激情网| 一区二区免费看| 亚洲欧洲99久久| 久久久精品免费网站| 日韩久久精品一区| 51精品国自产在线| 欧美日韩激情一区| 日本韩国一区二区三区视频| 北条麻妃一区二区三区| 丁香网亚洲国际| 国产一区二区三区免费看| 秋霞电影一区二区| 男人的j进女人的j一区| 日韩**一区毛片| 亚洲一区成人在线| 亚洲在线免费播放| 一区二区三区国产豹纹内裤在线| 欧美激情一区二区三区| 国产嫩草影院久久久久| 国产亚洲欧洲一区高清在线观看| 久久在线免费观看| 久久精品亚洲麻豆av一区二区| 欧美刺激脚交jootjob| 在线播放亚洲一区| 欧美一区二区三区在线视频| 欧美一级精品大片| 欧美v国产在线一区二区三区| 91精品国产综合久久久久久漫画 | 青青草国产成人av片免费| 亚洲第一主播视频| 亚洲第一av色| 六月丁香婷婷久久| 国产在线精品一区在线观看麻豆| 久久99精品视频| 国产一区二区剧情av在线| 懂色av中文字幕一区二区三区 | 欧美四级电影在线观看| 欧美性一区二区| 7777精品伊人久久久大香线蕉| 欧美日韩国产另类一区| 欧美一区二区三区视频免费| 欧美成人免费网站| 中文字幕av不卡| 一区二区三区不卡视频| 日产国产欧美视频一区精品| 国产一区二区视频在线| 成人精品高清在线| 在线欧美一区二区| 欧美一级高清片| 国产视频一区二区三区在线观看| 亚洲欧洲国产日韩| 日本欧美加勒比视频| 韩国三级中文字幕hd久久精品| 懂色av一区二区三区免费看| 色屁屁一区二区| 日韩欧美国产电影| 国产精品美女www爽爽爽| 日韩av一级电影| 国产一区三区三区| 91免费国产视频网站| 欧美一区二区黄色| ...xxx性欧美| 久久精品国产免费看久久精品| 成人午夜免费av| 67194成人在线观看| 国产精品日产欧美久久久久| 亚洲第一av色| voyeur盗摄精品| 91精品国产综合久久久久久久久久| 欧美国产日韩亚洲一区| 午夜影院久久久| 成人精品国产一区二区4080| 欧美电影一区二区三区| 国产精品久久久久影院| 日韩高清不卡在线| 91视频国产观看| 精品国产污网站| 亚洲va在线va天堂| caoporen国产精品视频| 精品捆绑美女sm三区| 亚洲影院久久精品| 国产不卡视频在线播放| 91麻豆精品国产91久久久久久| 亚洲少妇30p| 国产精品一区二区不卡| 91精品国产黑色紧身裤美女| 亚洲人成精品久久久久| 国产99久久久国产精品免费看| 3d成人动漫网站| 一区二区三区蜜桃网| 福利视频网站一区二区三区| 日韩久久免费av| 日韩成人午夜电影| 欧美网站大全在线观看| 亚洲三级在线免费观看| 成人在线视频一区二区| 精品久久久久久久一区二区蜜臀| 亚洲成人av福利| 欧美日韩亚洲国产综合| 亚洲欧美偷拍三级| 99天天综合性| 日本一区二区三区电影| 国产一区二区三区在线观看精品 | 国产午夜精品久久| 麻豆中文一区二区| 日韩一区二区三区三四区视频在线观看 | 老司机午夜精品| 欧美欧美欧美欧美首页| 亚洲激情图片一区| 91成人在线观看喷潮| 亚洲三级在线观看| av色综合久久天堂av综合| 欧美韩日一区二区三区四区| 国产成人av一区二区三区在线| 精品日产卡一卡二卡麻豆| 日产国产高清一区二区三区| 5566中文字幕一区二区电影| 视频一区二区三区入口| 欧美欧美午夜aⅴ在线观看| 亚洲.国产.中文慕字在线| 欧美日韩午夜在线| 日本午夜精品一区二区三区电影| 欧美日韩精品欧美日韩精品| 丝袜国产日韩另类美女| 91精品国产乱码| 精品一区二区三区久久久| 久久网站热最新地址| 国产成人自拍在线| ...xxx性欧美| 欧美视频在线播放| 日本不卡一二三区黄网| 精品sm捆绑视频| 豆国产96在线|亚洲| 天堂av在线一区| 欧美成人三级在线| 国产成人综合自拍| 亚洲欧美激情小说另类| 欧美一a一片一级一片| 石原莉奈在线亚洲二区| 欧美一区二区三区不卡| 国产乱码精品一区二区三区五月婷| 久久久久久久久99精品| 成人黄页毛片网站| 夜夜夜精品看看| 日韩三级免费观看| 国产精品18久久久久久久网站| 国产精品久久久久久户外露出 | 欧美一级久久久久久久大片| 国产一区二区美女诱惑| 亚洲欧美日韩一区二区| 欧美日韩一区二区在线观看视频 | 日韩欧美一区二区免费| 国产精品亚洲第一| 亚洲精品日韩综合观看成人91| 欧美高清激情brazzers| 国产一区福利在线| 亚洲一线二线三线久久久| 欧美精品一区二区三区高清aⅴ| 成人美女视频在线观看18| 天堂在线亚洲视频| 国产精品美女一区二区在线观看| 欧美日韩一区成人| 大桥未久av一区二区三区中文| 亚洲国产日韩在线一区模特| 久久在线观看免费| 欧美日韩精品三区| 国产+成+人+亚洲欧洲自线| 夜夜精品视频一区二区| 精品国产乱码久久久久久夜甘婷婷| 99国内精品久久| 激情伊人五月天久久综合| 亚洲欧美日韩一区二区三区在线观看| 欧美不卡123| 欧美日韩亚洲综合在线| 成人午夜短视频| 久久国产剧场电影| 亚洲高清视频的网址| 中文字幕一区二区日韩精品绯色| 欧美一级一区二区| 欧美中文字幕一区二区三区| 成人av高清在线| 国产一区二区三区四区五区美女 | 一区二区三区精品视频在线|