用c语言代码实现定义了一个二叉树结构btnode,并实现了创建二叉树、三种遍历方法(先序、中序和后序)。main函数中通过用户输入选择要进行哪种遍历,并循环执行直到用户选择退出。
时间: 2024-11-29 15:33:42 浏览: 16
这是一个简单的 C 语言代码示例,它定义了一个名为 `btnode` 的二叉树节点结构体,并实现了创建二叉树和三种遍历方法。`main` 函数允许用户选择遍历方式并不断循环,直到用户选择退出:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
typedef struct node {
char data;
struct node* lchild;
struct node* rchild;
} btnode;
// 创建二叉树函数
btnode* create_btree(char* str) {
btnode* tree = NULL;
... // 根据输入字符串创建二叉树逻辑,与给出的代码片段一致
return tree;
}
// 先序遍历函数
void preorder(btnode* b) {
if (b != NULL) {
printf("%c", b->data);
preorder(b->lchild);
preorder(b->rchild);
}
}
// 中序遍历函数
void inorder(btnode* b) {
if (b != NULL) {
inorder(b->lchild);
printf("%c", b->data);
inorder(b->rchild);
}
}
// 后序遍历函数
void postorder(btnode* b) {
if (b != NULL) {
postorder(b->lchild);
postorder(b->rchild);
printf("%c", b->data);
}
}
// 主函数
int main() {
char str[] = "A(B(C,D),H(E,F))";
btnode* tree = create_btree(str);
while (1) {
printf("\n---遍历选项---\n");
printf("1. 先序遍历\n");
printf("2. 中序遍历\n");
printf("3. 后序遍历\n");
printf("4. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1: preorder(tree); break;
case 2: inorder(tree); break;
case 3: postorder(tree); break;
case 4: exit(0); // 用户选择退出,结束循环
default: printf("无效选择,请重新输入。\n");
}
}
return 0;
}
```
这个代码片段展示了如何在 C 语言中实现基本的二叉树操作,包括创建和遍历。当用户输入 `4` 时,程序会结束循环并退出。注意,创建二叉树的具体实现未完全给出,需要根据输入字符串的具体规则填充这部分代码。
阅读全文