c语言创建二叉树
时间: 2023-10-03 22:09:13 浏览: 103
下面是一个用 C 语言实现的二叉树的基本操作示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct binary_tree {
int data;
struct binary_tree *left;
struct binary_tree *right;
} Binary_Tree;
// 创建新节点
Binary_Tree *create_node(int data) {
Binary_Tree *new_node = (Binary_Tree*) malloc(sizeof(Binary_Tree));
new_node->data = data;
new_node->left = NULL;
new_node->right = NULL;
return new_node;
}
// 插入节点
Binary_Tree *insert_node(Binary_Tree *root, int data) {
if (root == NULL) {
root = create_node(data);
} else if (data < root->data) {
root->left = insert_node(root->left, data);
} else if (data > root->data) {
root->right = insert_node(root->right, data);
}
return root;
}
// 先序遍历
void preorder_traversal(Binary_Tree *root) {
if (root != NULL) {
printf("%d ", root->data);
preorder_traversal(root->left);
preorder_traversal(root->right);
}
}
// 中序遍历
void inorder_traversal(Binary_Tree *root) {
if (root != NULL) {
inorder_traversal(root->left);
printf("%d ", root->data);
inorder_traversal(root->right);
}
}
// 后序遍历
void postorder_traversal(Binary_Tree *root) {
if (root != NULL) {
postorder_traversal(root->left);
postorder_traversal(root->right);
printf("%d ", root->data);
}
}
int main() {
Binary_Tree *root = NULL;
root = insert_node(root, 4);
insert_node(root, 2);
insert_node(root, 1);
insert_node(root, 3);
insert_node(root, 6);
insert_node(root, 5);
insert_node(root, 7);
printf("先序遍历: ");
preorder_traversal(root);
printf("\n");
printf("中序遍历: ");
inorder_traversal(root);
printf("\n");
printf("后序遍历: ");
postorder_traversal(root);
printf("\n");
return 0;
}
```
这段代码实现了二叉树的基本操作,包括创建新节点、插入节点和三种不同方式的遍历操作。在 `main()` 函数中,我们创建了一个二叉树,并对其进行了遍历,输出了遍历结果。
阅读全文