帮我用C语言写一个二叉树操作的程序(1)编写二叉树的基本操作函数。①创建一棵二叉树 CreateBiTree(BiTree *T); ②先序遍历,递归方法 re_PreOrder(BiTree * tree ) ③中序遍历,递归方法 re_MidOrder(BiTree * tree ) ④后序遍历,递归方法 re_PostOrder(BiTree * tree )(2)调用上述函数实现下列操作。 用递归方法分别先序、中序和后序遍历二叉树; 注意 要求动态显示二叉树的建立过程。要求各函数名称,函数形参和实参与我的要求一致,在创建二叉树时,设定一个标志位用于确定二叉树是否创建完成,即输入那个标志时结束二叉树创建。写一个菜单可以选择先序、中序还是后序
时间: 2024-01-22 09:21:03 浏览: 23
以下是一个简单的二叉树操作程序,包括创建二叉树、先序遍历、中序遍历、后序遍历等基本操作。在创建二叉树时,使用字符型标志位来表示是否继续添加节点。在遍历二叉树时,使用递归方法。
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
char data;
struct TreeNode *left;
struct TreeNode *right;
} 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)->left);
CreateBiTree(&(*T)->right);
}
}
// 先序遍历
void re_PreOrder(BiTree tree) {
if (tree != NULL) {
printf("%c ", tree->data);
re_PreOrder(tree->left);
re_PreOrder(tree->right);
}
}
// 中序遍历
void re_MidOrder(BiTree tree) {
if (tree != NULL) {
re_MidOrder(tree->left);
printf("%c ", tree->data);
re_MidOrder(tree->right);
}
}
// 后序遍历
void re_PostOrder(BiTree tree) {
if (tree != NULL) {
re_PostOrder(tree->left);
re_PostOrder(tree->right);
printf("%c ", tree->data);
}
}
// 显示菜单
void showMenu() {
printf("\n1. 先序遍历\n");
printf("2. 中序遍历\n");
printf("3. 后序遍历\n");
printf("4. 退出程序\n");
printf("请选择操作:");
}
int main() {
BiTree T;
printf("请输入二叉树的结点(#表示空结点):\n");
CreateBiTree(&T);
printf("\n二叉树创建完成!\n");
int choice;
do {
showMenu();
scanf("%d", &choice);
switch (choice) {
case 1:
printf("先序遍历结果:");
re_PreOrder(T);
break;
case 2:
printf("中序遍历结果:");
re_MidOrder(T);
break;
case 3:
printf("后序遍历结果:");
re_PostOrder(T);
break;
case 4:
printf("程序已退出!\n");
break;
default:
printf("请输入正确的选项!\n");
break;
}
} while (choice != 4);
return 0;
}
```
运行程序后,输入二叉树的结点,如:AB##C##D#F##。然后根据菜单选择先序、中序或后序遍历即可看到遍历结果。