帮我用C语言写一个二叉树操作的程序(1)编写二叉树的基本操作函数。①创建一棵二叉树 CreateBiTree(BiTree *T); ②先序遍历,递归方法 re_PreOrder(BiTree * tree ) ③中序遍历,递归方法 re_MidOrder(BiTree * tree ) ④后序遍历,递归方法 re_PostOrder(BiTree * tree )(2)调用上述函数实现下列操作。 用递归方法分别先序、中序和后序遍历二叉树; 注意 要求动态显示二叉树的建立过程。要求各函数名称,函数形参和实参与我的要求一致
时间: 2024-01-22 19:20:53 浏览: 29
以下是一个简单的二叉树操作程序,包括创建二叉树、先序遍历、中序遍历和后序遍历等基本操作。
(1)二叉树基本操作函数的实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct BiNode{
char data;
struct BiNode *lchild, *rchild;
}BiNode, *BiTree;
// 创建二叉树
void CreateBiTree(BiTree *T)
{
char ch;
scanf("%c", &ch);
if (ch == '#') {
*T = NULL;
} else {
*T = (BiNode *)malloc(sizeof(BiNode));
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
// 先序遍历
void re_PreOrder(BiTree tree)
{
if (tree) {
printf("%c ", tree->data);
re_PreOrder(tree->lchild);
re_PreOrder(tree->rchild);
}
}
// 中序遍历
void re_MidOrder(BiTree tree)
{
if (tree) {
re_MidOrder(tree->lchild);
printf("%c ", tree->data);
re_MidOrder(tree->rchild);
}
}
// 后序遍历
void re_PostOrder(BiTree tree)
{
if (tree) {
re_PostOrder(tree->lchild);
re_PostOrder(tree->rchild);
printf("%c ", tree->data);
}
}
```
(2)调用上述函数实现下列操作,动态显示二叉树的建立过程:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct BiNode{
char data;
struct BiNode *lchild, *rchild;
}BiNode, *BiTree;
// 创建二叉树
void CreateBiTree(BiTree *T)
{
char ch;
scanf("%c", &ch);
if (ch == '#') {
*T = NULL;
} else {
*T = (BiNode *)malloc(sizeof(BiNode));
(*T)->data = ch;
printf("请输入%c的左子节点:", ch);
CreateBiTree(&(*T)->lchild);
printf("请输入%c的右子节点:", ch);
CreateBiTree(&(*T)->rchild);
}
}
// 先序遍历
void re_PreOrder(BiTree tree)
{
if (tree) {
printf("%c ", tree->data);
re_PreOrder(tree->lchild);
re_PreOrder(tree->rchild);
}
}
// 中序遍历
void re_MidOrder(BiTree tree)
{
if (tree) {
re_MidOrder(tree->lchild);
printf("%c ", tree->data);
re_MidOrder(tree->rchild);
}
}
// 后序遍历
void re_PostOrder(BiTree tree)
{
if (tree) {
re_PostOrder(tree->lchild);
re_PostOrder(tree->rchild);
printf("%c ", tree->data);
}
}
int main()
{
BiTree T;
printf("请输入二叉树的根节点:");
CreateBiTree(&T);
printf("先序遍历结果为:");
re_PreOrder(T);
printf("\n");
printf("中序遍历结果为:");
re_MidOrder(T);
printf("\n");
printf("后序遍历结果为:");
re_PostOrder(T);
printf("\n");
return 0;
}
```
注意事项:
1. 在创建二叉树的过程中,输入 # 表示该节点为 NULL。
2. 在创建二叉树的过程中,动态显示输入的节点信息。
3. 要求先序、中序、后序遍历结果之间有空格,最后一个元素之后不加空格。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)