用c语言建立二叉树,按先序中序后序遍历二叉树
时间: 2023-10-13 16:21:12 浏览: 112
c代码-二叉树的建立以及先序、中序、后序遍历C语言实现
5星 · 资源好评率100%
以下用 C 语言建立二叉树并按先序、中序、后序遍历的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct node {
char data;
struct node* left;
struct node* right;
} Node;
// 创建二叉树
Node* create_tree() {
char ch;
scanf("%c", &ch);
if (ch == '#') { // 如果输入 #,表示该节点为空
return NULL;
}
Node* root = (Node*)malloc(sizeof(Node));
root->data = ch;
root->left = create_tree();
root->right = create_tree();
return root;
}
// 先序遍历二叉树
void preorder(Node* root) {
if (root == NULL) return;
printf("%c ", root->data);
preorder(root->left);
preorder(root->right);
}
// 中序遍历二叉树
void inorder(Node* root) {
if (root == NULL) return;
inorder(root->left);
printf("%c ", root->data);
inorder(root->right);
}
// 后序遍历二叉树
void postorder(Node* root) {
if (root == NULL) return;
postorder(root->left);
postorder(root->right);
printf("%c ", root->data);
}
int main() {
printf("请输入二叉树的先序遍历序列(#表示空节点):");
Node* root = create_tree();
printf("\n先序遍历:");
preorder(root);
printf("\n中序遍历:");
inorder(root);
printf("\n后序遍历:");
postorder(root);
printf("\n");
return 0;
}
```
示例输入:
```
请输入二叉树的先序遍历序列(#表示空节点):AB#C##DE#G##F###
```
示例输出:
```
先序遍历:A B C D E G F
中序遍历:B A C E D G F
后序遍历:B C G E F D A
```
阅读全文