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