创建一棵二叉树,对其实现先序、中序、后序遍历,用C语言代码实现
时间: 2024-05-15 14:14:12 浏览: 124
下面是用C语言实现二叉树的代码,包含先序、中序、后序遍历函数。
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点定义
typedef struct node {
int value; // 结点值
struct node *left; // 左子树
struct node *right; // 右子树
} Node;
// 创建二叉树
Node* createTree() {
int value;
scanf("%d", &value);
if (value == -1) {
return NULL;
}
Node *node = (Node*)malloc(sizeof(Node));
node->value = value;
node->left = createTree();
node->right = createTree();
return node;
}
// 先序遍历
void preOrderTraversal(Node *node) {
if (node == NULL) {
return;
}
printf("%d ", node->value);
preOrderTraversal(node->left);
preOrderTraversal(node->right);
}
// 中序遍历
void inOrderTraversal(Node *node) {
if (node == NULL) {
return;
}
inOrderTraversal(node->left);
printf("%d ", node->value);
inOrderTraversal(node->right);
}
// 后序遍历
void postOrderTraversal(Node *node) {
if (node == NULL) {
return;
}
postOrderTraversal(node->left);
postOrderTraversal(node->right);
printf("%d ", node->value);
}
int main() {
Node *root = createTree();
printf("pre-order traversal: ");
preOrderTraversal(root);
printf("\n");
printf("in-order traversal: ");
inOrderTraversal(root);
printf("\n");
printf("post-order traversal: ");
postOrderTraversal(root);
printf("\n");
return 0;
}
```
二叉树的输入格式为:
```
1 2 -1 -1 3 -1 -1
```
其中,-1 表示该结点为 NULL。这个例子创建了如下的二叉树:
```
1
/ \
2 3
```
阅读全文