用c语言写二叉树的插入
时间: 2023-03-21 20:01:13 浏览: 163
二叉树是一种重要的数据结构,C语言提供了许多灵活的方式来实现它。
以下是一个示例程序,展示了如何用C语言来实现二叉树的插入操作:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *left;
struct Node *right;
};
struct Node* newNode(int data) {
struct Node* node = (struct Node*)malloc(sizeof(struct Node));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
struct Node* insert(struct Node* node, int data) {
if (node == NULL) return newNode(data);
if (data < node->data)
node->left = insert(node->left, data);
else if (data > node->data)
node->right = insert(node->right, data);
return node;
}
void inorderTraversal(struct Node* node) {
if (node == NULL) return;
inorderTraversal(node->left);
printf("%d ", node->data);
inorderTraversal(node->right);
}
int main() {
struct Node* root = NULL;
root = insert(root, 50);
insert(root, 30);
insert(root, 20);
insert(root, 40);
insert(root, 70);
insert(root, 60);
insert(root, 80);
inorderTraversal(root);
return 0;
}
```
在上述代码中,我们使用了一个 `struct Node` 结构体来表示二叉树的每个节点。`newNode` 函数用于创建一个新的节点,并初始化它的值和指向左右子节点的指针。`insert` 函数用于插入一个新的节点到二叉树中,如果当前节点为空,就创建一个新的节点;否则,根据当前节点的值和待插入节点的值的比较结果,递归地调用 `insert` 函数,直到找到合适的位置。`inorderTraversal` 函数用于按照中序遍历的方式遍历整棵二叉树,并输出每个节点的值。
在主函数中,我们创建了一个空的根节点,并按照顺序插入了一些节点。最后,我们通过调用 `inorderTraversal` 函数来遍历整棵二叉树,并输出每个节点的值。
阅读全文