输入二叉树的先序遍历序列,以#代表空树,输出该二叉树的中序遍历序列。例如,有如下二叉树,其先序序列为:ABC##DE#G##F###,输出其中序序列:CBEGDFA void InOrder(BiTree Tree)//中序遍历 void creat(BiTree &Tree)//构建二叉树typedef struct BiTNode { char data; struct BiTNode *lchild; struct BiTNode *rchild; }BiTNode,*BiTree;测试样例为#include<stdio.h> #include<malloc.h> #define len sizeof(struct BiTNode ) typedef struct BiTNode { char data; struct BiTNode *lchild; struct BiTNode *rchild; }BiTNode,*BiTree; void InOrder(BiTree Tree); void creat(BiTree &Tree); int main() { BiTree Tree; creat(Tree);//创建二叉树 InOrder(Tree);//中序遍历 return 0; } /* 请在这里填写答案 */用c语言实现
时间: 2024-02-07 16:02:08 浏览: 138
代码如下:
```c
#include<stdio.h>
#include<malloc.h>
#define len sizeof(struct BiTNode )
typedef struct BiTNode {
char data;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiTNode,*BiTree;
void InOrder(BiTree Tree);
void creat(BiTree &Tree);
int main() {
BiTree Tree;
creat(Tree);//创建二叉树
InOrder(Tree);//中序遍历
return 0;
}
void creat(BiTree &Tree) {
char c;
scanf("%c", &c);
if(c == '#') {
Tree = NULL;
} else {
Tree = (BiTree)malloc(len);
Tree->data = c;
creat(Tree->lchild);
creat(Tree->rchild);
}
}
void InOrder(BiTree Tree) {
if(Tree) {
InOrder(Tree->lchild);
printf("%c", Tree->data);
InOrder(Tree->rchild);
}
}
```
输入先序遍历序列,构建二叉树,然后输出中序遍历序列。其中,`#`代表空树。
阅读全文