c语言创建二叉树并实现先序中序后序三种遍历
时间: 2023-07-23 15:25:58 浏览: 111
c代码-二叉树的建立以及先序、中序、后序遍历C语言实现
好的,我来回答你的问题。
首先,我们需要定义二叉树的结构体,包括节点的值,左右子树的指针。
```c
typedef struct node {
int data;
struct node *left;
struct node *right;
} Node;
```
接下来,我们可以编写函数来创建二叉树。这里我们采用递归的方式,先输入根节点的值,再递归创建左右子树。
```c
Node* create_tree() {
int val;
Node *new_node;
printf("请输入节点的值(-1表示结束):");
scanf("%d", &val);
if (val == -1) {
return NULL;
}
new_node = (Node*)malloc(sizeof(Node));
new_node->data = val;
new_node->left = create_tree();
new_node->right = create_tree();
return new_node;
}
```
接下来,我们可以实现三种遍历方式。
先序遍历,即先访问根节点,再访问左子树,最后访问右子树。
```c
void pre_order(Node *root) {
if (root == NULL) {
return;
}
printf("%d ", root->data);
pre_order(root->left);
pre_order(root->right);
}
```
中序遍历,即先访问左子树,再访问根节点,最后访问右子树。
```c
void in_order(Node *root) {
if (root == NULL) {
return;
}
in_order(root->left);
printf("%d ", root->data);
in_order(root->right);
}
```
后序遍历,即先访问左子树,再访问右子树,最后访问根节点。
```c
void post_order(Node *root) {
if (root == NULL) {
return;
}
post_order(root->left);
post_order(root->right);
printf("%d ", root->data);
}
```
最后,我们可以在主函数中调用这些函数来创建二叉树并遍历。
```c
int main() {
Node *root;
root = create_tree();
printf("先序遍历:");
pre_order(root);
printf("\n");
printf("中序遍历:");
in_order(root);
printf("\n");
printf("后序遍历:");
post_order(root);
printf("\n");
return 0;
}
```
阅读全文