C语言要求采用二叉链表作为存贮结构,完成二叉树的建立、先序、中序、和后序遍历的操作。 2)输入数据:树中每个结点的数据类型设定为字符型。 3)实现如下二叉树处理函数: 建树子函数 先序遍历子函数 中序遍历子函数 后序遍历子函数 全代码
时间: 2023-12-03 21:42:33 浏览: 54
以下是C语言实现二叉树建立和遍历的完整代码:
```c
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
char data; // 存储字符类型数据
struct node *lchild; // 左子节点指针
struct node *rchild; // 右子节点指针
}Node, *pNode;
void create_tree(pNode *root){ // 建树函数
char ch;
scanf("%c", &ch);
if(ch == '#'){ // 输入#表示该子树为空
*root = NULL;
}
else{
*root = (pNode)malloc(sizeof(Node)); // 为该节点分配内存
(*root)->data = ch;
create_tree(&(*root)->lchild); // 递归建立左子树
create_tree(&(*root)->rchild); // 递归建立右子树
}
}
void pre_order(pNode root){ // 先序遍历函数
if(root){
printf("%c ", root->data);
pre_order(root->lchild);
pre_order(root->rchild);
}
}
void in_order(pNode root){ // 中序遍历函数
if(root){
in_order(root->lchild);
printf("%c ", root->data);
in_order(root->rchild);
}
}
void post_order(pNode root){ // 后序遍历函数
if(root){
post_order(root->lchild);
post_order(root->rchild);
printf("%c ", root->data);
}
}
int main(){
pNode root;
printf("请输入二叉树的先序遍历序列(用#表示空节点):\n");
create_tree(&root);
printf("先序遍历结果为:");
pre_order(root);
printf("\n中序遍历结果为:");
in_order(root);
printf("\n后序遍历结果为:");
post_order(root);
printf("\n");
return 0;
}
```
在运行程序时,输入二叉树的先序遍历序列即可得到该二叉树的三种遍历结果。