SHAOXIAOJ正在加载中...

1678: 树-二叉树的创建及基本操作

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

题目描述

输入若干字符序列('#'代表空),按先序序列建立二叉树(采用二叉链表存储),将其复制后,销毁原二叉树,中序遍历复制后的二叉树。其中函数InitBiTree用于初始化一棵空树,CreateBiTree根据输入字符串创建一个二叉链表存储的树,InOrderTraverse中序遍历树,CopyBiTree将创建的树进行复制,DestroyBiTree将树销毁。
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
Status visit(char e) {
	printf("%c ",e);
	return OK;
}
typedef struct BiTNode {
	char data;
	struct BiTNode *lchild,*rchild;
} BiTNode,*BiTree;

void InitBiTree(BiTree &T);
void CreateBiTree(BiTree &T);
void InOrderTraverse(BiTree T);
void CopyBiTree(BiTree T,BiTree &T1);
void DestroyBiTree(BiTree &T);

int main(void) {
	BiTree T,T1;
	InitBiTree(T);
	InitBiTree(T1);
	CreateBiTree(T);
	CopyBiTree(T,T1);
	DestroyBiTree(T);
	InOrderTraverse(T1);
	return 0;
}

/* 销毁二叉树T */
void DestroyBiTree(BiTree &T) {
	if(T) {
		DestroyBiTree(T->lchild);
		DestroyBiTree(T->rchild);
		free(T);
	}
	T=NULL;
}

/*仅提交以下代码*/


/* 构造空二叉树T */
void InitBiTree(BiTree &T) {

}

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

}

/*中序递归遍历T */
void InOrderTraverse(BiTree T) {

}
/*将二叉树T复制给T1*/
void CopyBiTree(BiTree T,BiTree &T1) {

}

输入格式

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

输出格式

输出复制二叉树的中序遍历序列

输入样例    复制

ABC##DE#G##F###

输出样例    复制

C B E G D F A