SHAOXIAOJ正在加载中...

1673: 树-二叉树的创建和层次遍历

金币值:2 定数:9 时间限制:1.000 s 内存限制:128 M
正确:5 提交:5 正确率:100.00% 命题人:

题目描述

输入若干字符序列('#'代表空),按先序序列建立二叉树(采用二叉链表存储),输出该二叉树的层次遍历序列。部分代码如下,其中函数InitQueue初始化一个队列,EnQueue 入队列,DeQueue 出队列,EmptyQueue 判断队列是否为空,InitBiTree用于初始化一棵空树,CreateBiTree根据输入字符串创建一个二叉链表存储的树,LevelOrderTraverse层次遍历二叉树。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100

typedef struct BiTNode {
	char data;
	struct BiTNode *lchild,*rchild;
} BiTNode,*BiTree;

typedef BiTree QElemType;

typedef struct {
	QElemType *base;
	int front;
	int rear; /*若队列不空,指向队列尾元素的下一个位置 */
} SqQueue;

void InitQueue(SqQueue &Q);
int EnQueue(SqQueue &Q, QElemType e);
int DeQueue(SqQueue &Q, QElemType &e);
int EmptyQueue(SqQueue Q);
void InitBiTree(BiTree &T);
void CreateBiTree(BiTree &T);
void LevelOrderTraverse(BiTree T);

int main(void) {
	BiTree T;
	InitBiTree(T);
	CreateBiTree(T);
	LevelOrderTraverse (T);
	return 0;
}

void InitQueue(SqQueue &Q) {
	Q.base=new BiTree[MAXSIZE];
	if(!Q.base) exit(OVERFLOW);
	Q.front=Q.rear=0;
}


int EnQueue(SqQueue &Q, QElemType e) {
	if((Q.rear+1)%MAXSIZE==Q.front)
		return ERROR;
	Q.base[Q.rear]=e;
	Q.rear=(Q.rear+1)%MAXSIZE;
	return OK;
}

int DeQueue(SqQueue &Q, QElemType &e) {
	if(Q.front==Q.rear)
		return ERROR;
	e=Q.base[Q.front];
	Q.front=(Q.front+1)%MAXSIZE;
	return OK;
}

int EmptyQueue(SqQueue Q) {
	if(Q.front==Q.rear)  return 1;
	else              return 0;
}

/*仅提交以下代码*/
void InitBiTree(BiTree &T) {

}


/* 按先序输入二叉树中结点的值(一个字符),#表示空树,构造二叉链表表示二叉树T。 */
void CreateBiTree(BiTree &T) {
	char ch;

}

void LevelOrderTraverse(BiTree T) {
	SqQueue Q;
	InitQueue(Q);
	QElemType p;



}

输入格式

在一行上输入若干个字符以建立一棵二叉树,遇‘#’表示建立一个空二叉树。

输出格式

二叉树的层次遍历序列

输入样例    复制

AC#D#B##E##

输出样例    复制

ACEDB