C语言实现根据先序遍历序列A B C ^ ^ D E ^ G ^ ^ F ^ ^ ^,在内存中建立其对应二叉树的二叉链表数据结构,并以中序和后序遍历序列打印该二叉树节点信息。C语言实现注:^代表空节点。
时间: 2023-11-13 13:08:47 浏览: 80
以下是实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTreeNode {
char data;
struct BiTreeNode *lchild, *rchild;
} BiTreeNode, *BiTree;
// 根据先序遍历序列创建二叉树
void createBiTree(BiTree *T) {
char ch;
scanf("%c", &ch);
if (ch == '^') {
*T = NULL;
} else {
*T = (BiTree) malloc(sizeof(BiTreeNode));
(*T)->data = ch;
createBiTree(&(*T)->lchild);
createBiTree(&(*T)->rchild);
}
}
// 中序遍历打印节点信息
void inOrderTraverse(BiTree T) {
if (T) {
inOrderTraverse(T->lchild);
printf("%c ", T->data);
inOrderTraverse(T->rchild);
}
}
// 后序遍历打印节点信息
void postOrderTraverse(BiTree T) {
if (T) {
postOrderTraverse(T->lchild);
postOrderTraverse(T->rchild);
printf("%c ", T->data);
}
}
int main() {
BiTree T;
printf("请输入先序遍历序列:\n");
createBiTree(&T);
printf("中序遍历序列:");
inOrderTraverse(T);
printf("\n后序遍历序列:");
postOrderTraverse(T);
printf("\n");
return 0;
}
```
输入先序遍历序列`A B C ^ ^ D E ^ G ^ ^ F ^ ^ ^`,输出结果为:
```
中序遍历序列:C B A E D G F
后序遍历序列:C B G E F D A
```
阅读全文