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

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

?? levelordertraverse.c

?? 從鍵盤輸入二叉樹的節(jié)點(diǎn)數(shù)據(jù)建立二叉樹
?? C
字號(hào):
/***********************************************************************************************************************
                                        
  Copyright (C), 2006-2007, MegaByte Tech. Co., Ltd.

  文件名:      LevelOrderTraverse.c
  作者:        孫璇
  功能描述:    輸入二叉樹的數(shù)值,調(diào)用函數(shù)LevelOrderTraverse
               使其按照層次輸出。
  
  函數(shù)列表:    1. main(void)
	           2. CreateBiTree(PBTree *T)
			   3. LevelOrderTraverse(PBTree T)
			   4. InitQue(Pque Q)
			   5. QueEmpty(Pque Q)
			   6. EnQue(Pque Q,PBTree node)
			   7. DeQue(Pque Q,PBTree *node)
			   8. Visit(PBTree pNode)

  未完成:      動(dòng)態(tài)分配的內(nèi)存還沒有釋放!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          

***********************************************************************************************************************/

#define ERROR 0
#define OK    1
#define NULL  0
#define NODE  struct TNode

#define QUEUE struct Queue
#define QNODE struct QNode

#include <stdio.h>
#include <stdlib.h>

/***********************************************************************************************************************/

typedef NODE                     /*節(jié)點(diǎn)結(jié)構(gòu)體類型*/
{
    char data; 
	NODE *LChild; 
	NODE *RChild; 
} *PBTree;                       /*指向節(jié)點(diǎn)的指針類型*/


typedef QNODE                    /*隊(duì)列節(jié)點(diǎn)結(jié)構(gòu)體類型*/
{
	PBTree  data;
	QNODE  *next;
} *Qnode;                        /*指向隊(duì)列節(jié)點(diǎn)的指針類型*/

typedef QUEUE                    /*隊(duì)列結(jié)構(gòu)體類型*/
{
	Qnode  front;
	Qnode  rear;
} *Pque;                         /*指向隊(duì)列的指針類型*/ 

/*******************************************************************************************************************

  函數(shù)名稱:       main
  調(diào)用函數(shù):       CreateBiTree()
                  LevelOrderTraverse()
				  printf()
  被調(diào)用:         None   

  輸入?yún)?shù):       二叉樹每個(gè)節(jié)點(diǎn)的數(shù)值                  
  輸出參數(shù):       二叉樹元素按照中序排列后的數(shù)值  
  返回值:         None

  功能描述:       輸入二叉樹的數(shù)值,調(diào)用函數(shù)LevelOrderTraverse
                  使其按照層次輸出。

*******************************************************************************************************************/

void main(void)
{
	/*指向指針的指針T*/
	PBTree  *pRoot;

	/*指向根節(jié)點(diǎn)的指針*/
	PBTree  root;

	/*聲明調(diào)用的函數(shù)*/
	int CreateBiTree(PBTree *pRoot);
	int LevelOrderTraverse(PBTree pRoot);

	/*給根節(jié)點(diǎn)申請(qǐng)內(nèi)存空間*/
	if (!(root = (PBTree) malloc (sizeof(PBTree)) ) )
	{
		exit (ERROR);
	}

	/*T指向根節(jié)點(diǎn)的指針*/
	pRoot = &root;

	printf("\nPlease input a tree: ");

	/*創(chuàng)建一棵二叉樹*/
    CreateBiTree(pRoot);

	printf("\nIn level-order is: ");

	/*對(duì)二叉樹按層次遍歷*/
	LevelOrderTraverse(*pRoot);
	printf("\n\n");
		
}	

/*******************************************************************************************************************

  函數(shù)名稱:       InitQue

  調(diào)用函數(shù):       None
  被調(diào)用:         LevelOrderTraverse()   

  輸入?yún)?shù):       Q,指向隊(duì)列結(jié)構(gòu)體的指針。                 
  輸出參數(shù):       None  
 
  返回值:         ERROR,動(dòng)態(tài)分配內(nèi)存失敗。
                  OK   ,成功初始化隊(duì)列。

  功能描述:       參數(shù)Q為指向隊(duì)列結(jié)構(gòu)體的指針,
                  為該結(jié)構(gòu)體變量申請(qǐng)空間并初始化。
                  

*******************************************************************************************************************/

int InitQue(Pque Q)
{
	/*為隊(duì)列申請(qǐng)空間*/
    (*Q).rear = (Qnode)malloc(sizeof(QNODE));

	if (!(*Q).rear)
	{
		/*分配空間失敗*/
		exit (ERROR);
	}
	else
	{
		/*初始化隊(duì)列,頭等于尾*/
		(*Q).front = (*Q).rear;
		(*Q).front->next = NULL;

		return OK;
	}
}


/*******************************************************************************************************************

  函數(shù)名稱:       QueEmpty

  調(diào)用函數(shù):       None
  被調(diào)用:         LevelOrderTraverse()   

  輸入?yún)?shù):       q,指向隊(duì)列結(jié)構(gòu)體的指針。                 
  輸出參數(shù):       None  
 
  返回值:         ERROR,隊(duì)列不是空的。
                  OK   ,隊(duì)列是空的。

  功能描述:       參數(shù)Q為指向隊(duì)列結(jié)構(gòu)體的指針,
                  判斷該變量是不是空隊(duì)列。
                  

*******************************************************************************************************************/

int QueEmpty(Pque Q)
{

	/*頭指針等于尾指針則為空隊(duì)列*/
	if((*Q).rear==(*Q).front)
	{
		return OK;
	}
	else
	{
		/*不等于則不是*/
		return ERROR;
	}
}


/*******************************************************************************************************************

  函數(shù)名稱:       EnQue()

  調(diào)用函數(shù):       None
  被調(diào)用:         LevelOrderTraverse()   

  輸入?yún)?shù):       Q,指向隊(duì)列結(jié)構(gòu)體的指針。
                  node,指向二叉樹節(jié)點(diǎn)類型的指針。
  輸出參數(shù):       None  
 
  返回值:         ERROR,動(dòng)態(tài)分配內(nèi)存失敗。
                  OK   ,將節(jié)點(diǎn)壓入隊(duì)列成功。

  功能描述:       把node指向的節(jié)點(diǎn)壓入Q指向的
                  隊(duì)列結(jié)構(gòu)體變量。
                  
*******************************************************************************************************************/

int EnQue(Pque Q,PBTree node)
{
	/*給一個(gè)節(jié)點(diǎn)動(dòng)態(tài)分配內(nèi)存*/
    Qnode pnew = (Qnode)malloc(sizeof(QNODE));
	if(!pnew)
	{
		/*分配失敗*/
		exit(ERROR);
	}

	/*把參數(shù)值賦給新節(jié)點(diǎn)*/
	pnew->data = node;
	pnew->next = NULL;

	/*尾指針指向新節(jié)點(diǎn)*/
	Q->rear->next = pnew;
	Q->rear = pnew;

	return OK;
}

/*******************************************************************************************************************

  函數(shù)名稱:       DeQue

  調(diào)用函數(shù):       None
  被調(diào)用:         LevelOrderTraverse()   

  輸入?yún)?shù):       Q,指向隊(duì)列結(jié)構(gòu)體的指針。                
  輸出參數(shù):       node,指向二叉樹節(jié)點(diǎn)類型指針的指針。  
 
  返回值:         ERROR,棧已空。
                  OK   ,將節(jié)點(diǎn)彈出棧成功。

  功能描述:       把Q指向的結(jié)構(gòu)體變量的頭節(jié)點(diǎn)彈出,
                  并用node指向其指針。  
                                    
*******************************************************************************************************************/

int DeQue(Pque Q,PBTree *node)
{
	/*q指向頭指針的下一個(gè)節(jié)點(diǎn)*/
    Qnode q = Q->front->next;

	/*如果是空隊(duì)列*/
	if (Q->front==Q->rear)
	{
		return ERROR;
	}

	/*不是空隊(duì)列*/
	else
	{
		/*q對(duì)應(yīng)的data賦給參數(shù)指向的節(jié)點(diǎn)*/
		*node = q->data;

		/*調(diào)整頭尾節(jié)點(diǎn)的指向*/
		Q->front->next = q->next;
		if (Q->rear == q)
		{
			Q->rear = Q->front;
		}
		return OK;
	}
}

/*******************************************************************************************************************

  函數(shù)名稱:       Visit

  調(diào)用函數(shù):       None
  被調(diào)用:         LevelOrderTraverse()   

  輸入?yún)?shù):       pNode,指向二叉樹節(jié)點(diǎn)類型的指針。                
  輸出參數(shù):       None
 
  返回值:         ERROR,該節(jié)點(diǎn)為NULL。
                  OK   ,將節(jié)點(diǎn)數(shù)據(jù)打印成功。

  功能描述:       把pNode指向的二叉樹節(jié)點(diǎn)的數(shù)據(jù)打印出來。  
                                    
*******************************************************************************************************************/


int Visit(PBTree pNode)
{
	/*pNode不為空*/
	if (pNode)
	{
		/*打印該節(jié)點(diǎn)數(shù)據(jù)部分*/
        printf("%d. ",(*pNode).data);
	    return OK;
	}
	else
	{
		return ERROR;
	}
}

/*******************************************************************************************************************

  函數(shù)名稱:       CreateBiTree

  調(diào)用函數(shù):       scanf()
                  free()
				  CreateBiTree()
				 
  被調(diào)用:         main()
                  CreateBiTree()

  輸入?yún)?shù):       pRoot,指向二叉樹節(jié)點(diǎn)類型指針的指針。                
  輸出參數(shù):       None
 
  返回值:         ERROR,動(dòng)態(tài)分配內(nèi)存失敗。
                  OK   ,創(chuàng)建二叉樹成功。

  功能描述:       用scanf()函數(shù)輸入數(shù)據(jù),并依次以之為節(jié)點(diǎn),
                  通過遞歸調(diào)用的方法建立二叉樹。
                                    
*******************************************************************************************************************/

	
int CreateBiTree(PBTree *pRoot)
{
    /*輸入一個(gè)整數(shù)*/
	int  node;
	scanf("%d",&node);

	/*若為0則樹為空樹*/
	if (node==0)
	{
		/*釋放該節(jié)點(diǎn)*/
		free(*pRoot);
	    *pRoot = NULL;
	}/*if*/

	/*若不為0*/
	else
	{
		/*將其值賦給節(jié)點(diǎn)的數(shù)據(jù)部分*/
		(**pRoot).data = node;

		/*為該節(jié)點(diǎn)的左孩子申請(qǐng)空間*/
		if (!((**pRoot).LChild = (PBTree) malloc (sizeof(PBTree)) ) )
		{
		    return ERROR;
		}

		/*建立以其左孩子為根節(jié)點(diǎn)的子樹*/
		CreateBiTree(&(**pRoot).LChild);

		/*為該節(jié)點(diǎn)的右孩子申請(qǐng)空間*/
		if (!((**pRoot).RChild = (PBTree) malloc (sizeof(PBTree)) ) )
		{
		    return ERROR;
		}

		/*建立以其右孩子為根節(jié)點(diǎn)的子樹*/
		CreateBiTree(&(**pRoot).RChild);

	}/*else*/

	return OK;

}/*end*/

/*******************************************************************************************************************

  函數(shù)名稱:       LevelOrderTraverse

  調(diào)用函數(shù):       InitStack()
                  QueEmpty()
				  EnQue()
				  DeQue()
				  Visit()
  被調(diào)用:         main()
                  
  輸入?yún)?shù):       pRoot,指向二叉樹節(jié)點(diǎn)類型指針的指針。                
  輸出參數(shù):       None
 
  返回值:         ERROR,打印節(jié)點(diǎn)不成功。
                  OK   ,成功遍歷二叉樹。

  功能描述:       用InitStack()函數(shù)初始化棧,QueEmpty()判斷棧是否空,
                  EnQue(),DeQue()控制節(jié)點(diǎn)的出入隊(duì)列。Visit()將節(jié)點(diǎn)內(nèi)容打印
				  出來。
                                    
*******************************************************************************************************************/

int LevelOrderTraverse(PBTree pRoot)
{
	/*pNode指向根節(jié)點(diǎn)*/
	PBTree pNode = pRoot;

	/*Q為指向隊(duì)列的指針*/
	Pque   Q;
	Q = (Pque)malloc(sizeof(Pque));
	if(!Q)
	{
		exit (ERROR);
	}

	/*初始化隊(duì)列并壓入根節(jié)點(diǎn)*/
	InitQue(Q);
	EnQue(Q,pNode);

	/*隊(duì)列非空*/
	while(!QueEmpty(Q))
	{
		/*彈出頭節(jié)點(diǎn)*/
		DeQue(Q,&pNode);

		/*用Visit函數(shù)訪問節(jié)點(diǎn)*/
		if (!Visit(pNode))
		{
			/*訪問失敗*/
			return ERROR;

		}/*if*/

		/*打印成功*/
		else
		{
			/*左節(jié)點(diǎn)入隊(duì)列*/
			if((*pNode).LChild)
			{
			    EnQue(Q,(*pNode).LChild);
			}

			/*右節(jié)點(diǎn)入隊(duì)列*/
			if((*pNode).RChild)
			{
			    EnQue(Q,(*pNode).RChild);
			} 
			
		}/*else*/

	}/*while*/

	return OK;

}/*end*/
/*******************************************************************************************************************/


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久99精品| 亚洲免费在线视频| 日本乱码高清不卡字幕| 免费不卡在线视频| 亚洲一区免费视频| 国产精品网站导航| 日韩一区二区三区视频在线观看| av一区二区三区在线| 久久se这里有精品| 亚洲国产sm捆绑调教视频 | 91麻豆蜜桃一区二区三区| 免费国产亚洲视频| 一区二区三区日韩精品| 欧美国产一区视频在线观看| 欧美刺激脚交jootjob| 欧美日韩精品免费观看视频| 99国产精品国产精品久久| 国产毛片精品视频| 美女www一区二区| 亚洲第一在线综合网站| 亚洲免费看黄网站| 国产精品国产自产拍高清av| 久久女同性恋中文字幕| 欧美大片国产精品| 欧美一二三四在线| 欧美一区二区三区在线电影| 欧美日韩精品欧美日韩精品一综合| 91麻豆自制传媒国产之光| 成人精品国产一区二区4080| 国产不卡视频在线观看| 国产美女av一区二区三区| 精品一区二区精品| 国产在线精品一区二区夜色| 精品一区二区三区免费播放| 精品制服美女久久| 久久99精品久久久久婷婷| 久久国产综合精品| 九九**精品视频免费播放| 免费xxxx性欧美18vr| 蜜桃视频在线一区| 激情综合五月婷婷| 国产麻豆视频精品| 成人精品一区二区三区四区| 成人一区在线观看| 95精品视频在线| 色激情天天射综合网| 在线免费av一区| 欧美日韩综合在线| 日韩一级免费一区| 久久这里都是精品| 国产精品污网站| 亚洲美女少妇撒尿| 亚洲成av人综合在线观看| 日韩激情视频在线观看| 毛片不卡一区二区| 国产成人精品免费| 一本色道久久综合亚洲aⅴ蜜桃| 在线观看欧美精品| 3atv一区二区三区| 久久久高清一区二区三区| 中文字幕av不卡| 一区二区三区四区中文字幕| 午夜精品影院在线观看| 精品亚洲国产成人av制服丝袜| 国产成人免费视频| 色噜噜偷拍精品综合在线| 91精品国产福利在线观看| 国产亚洲精品精华液| 亚洲人123区| 日本系列欧美系列| 成人国产精品视频| 欧美日韩成人综合天天影院| 久久综合av免费| 一区二区三区蜜桃网| 麻豆成人av在线| 91丝袜美女网| 日韩一区二区三区四区五区六区| 国产日本亚洲高清| 亚洲自拍另类综合| 国产91综合一区在线观看| 欧美视频自拍偷拍| 国产视频一区二区三区在线观看| 一区av在线播放| 国产一区二区导航在线播放| 色网综合在线观看| 久久久另类综合| 亚洲成人av一区| 成人av在线一区二区三区| 欧美日韩不卡一区二区| 中文字幕欧美日韩一区| 日韩精品一二三区| 99久久综合精品| 久久婷婷久久一区二区三区| 亚洲永久精品大片| 粉嫩嫩av羞羞动漫久久久| 日韩一区二区三区观看| 一区二区三区四区精品在线视频| 黄一区二区三区| 欧美精品乱码久久久久久| 国产精品久久精品日日| 国产综合色在线| 欧美日韩免费高清一区色橹橹| 国产精品私人影院| 国内久久精品视频| 91超碰这里只有精品国产| 亚洲精品免费电影| 成人激情校园春色| 亚洲精品一线二线三线| 五月婷婷另类国产| 欧美影院一区二区三区| 国产精品国产精品国产专区不蜜 | 免费日本视频一区| 在线视频综合导航| 综合精品久久久| 国产91高潮流白浆在线麻豆| 精品国产乱码久久久久久免费 | 国产乱人伦偷精品视频不卡| 91精品中文字幕一区二区三区| 亚洲精品久久7777| 91视频观看免费| 中文文精品字幕一区二区| 久久精品国产99国产精品| 5858s免费视频成人| 亚洲成a人v欧美综合天堂| 欧美在线999| 亚洲激情综合网| 一本一道综合狠狠老| 自拍偷拍国产精品| jiyouzz国产精品久久| 欧美激情综合网| 成人亚洲一区二区一| 国产精品丝袜黑色高跟| 成人午夜又粗又硬又大| 欧美国产丝袜视频| 国产91富婆露脸刺激对白| 国产视频一区二区在线观看| 国产·精品毛片| 国产精品污网站| 97se狠狠狠综合亚洲狠狠| 亚洲天堂网中文字| 色88888久久久久久影院野外| 一区二区欧美国产| 欧美精品1区2区| 蜜臀va亚洲va欧美va天堂 | 欧美美女一区二区三区| 五月天婷婷综合| 日韩欧美美女一区二区三区| 免费观看久久久4p| 久久综合色综合88| 国产69精品久久久久毛片| 中文字幕一区二区不卡| 在线欧美一区二区| 日本不卡在线视频| 337p粉嫩大胆色噜噜噜噜亚洲| 国产不卡视频一区二区三区| 亚洲色图在线视频| 欧美日韩一区二区不卡| 另类的小说在线视频另类成人小视频在线| 91精品国产高清一区二区三区| 国产制服丝袜一区| 国产精品国产三级国产专播品爱网| 91麻豆免费看片| 日韩高清中文字幕一区| 久久九九影视网| 在线观看日韩一区| 精久久久久久久久久久| 国产精品久久久久久久久免费樱桃| 91麻豆国产精品久久| 奇米综合一区二区三区精品视频| 久久嫩草精品久久久精品一| 91丝袜美女网| 麻豆91在线看| 亚洲精品第1页| 日韩欧美一区二区三区在线| 国产不卡视频在线观看| 午夜伦理一区二区| 中文字幕乱码一区二区免费| 欧美性一级生活| 欧美性视频一区二区三区| 激情都市一区二区| 亚洲国产日韩a在线播放| 久久久久久日产精品| 欧美性大战久久久久久久蜜臀| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲精品亚洲人成人网| 欧美成人r级一区二区三区| 99久久er热在这里只有精品15| 欧美a级理论片| 亚洲日穴在线视频| 久久久影视传媒| 欧美精品v国产精品v日韩精品| 懂色av中文字幕一区二区三区| 日韩国产欧美一区二区三区| 中文字幕在线观看不卡视频| 日韩一级二级三级精品视频| 色综合咪咪久久| 国产1区2区3区精品美女| 全部av―极品视觉盛宴亚洲| 亚洲欧美日韩系列| 中文字幕久久午夜不卡|