帮我写一个c语言二叉树的代码
时间: 2023-06-02 13:05:46 浏览: 104
好的,以下是一个简单的二叉树的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *left;
struct node *right;
};
struct node *insert(struct node *node, int data) {
if (node == NULL) {
struct node *temp = (struct node *) malloc(sizeof(struct node));
temp->data = data;
temp->left = NULL;
temp->right = NULL;
return temp;
}
if (data < node->data) {
node->left = insert(node->left, data);
} else if (data > node->data) {
node->right = insert(node->right, data);
}
return node;
}
void traverse_inorder(struct node *node) {
if (node != NULL) {
traverse_inorder(node->left);
printf("%d ", node->data);
traverse_inorder(node->right);
}
}
int main() {
struct node *root = NULL;
root = insert(root, 8);
root = insert(root, 3);
root = insert(root, 10);
root = insert(root, 1);
root = insert(root, 6);
root = insert(root, 14);
root = insert(root, 4);
root = insert(root, 7);
root = insert(root, 13);
printf("In-order traversal: ");
traverse_inorder(root);
printf("\n");
return 0;
}
```
这个代码可以实现二叉树的创建和遍历。在主函数中,我们先创建一个空的根节点,然后调用 `insert` 函数来插入节点。在 `insert` 函数中,我们先判断当前节点是否为 `NULL`,如果是,则说明这个节点是空的,我们就创建一个新节点,并拿着数据初始化它。如果当前节点不为空,我们就根据数据的大小来决定是插入到左子树还是右子树。
在遍历二叉树时,我们采用中序遍历的方式,即先遍历左子树,然后访问当前节点,最后遍历右子树。
这只是一个简单的示例代码,你可以根据需要进行修改或扩展来满足你的实际需求。
阅读全文