用C语言写完整的二叉树
时间: 2023-09-28 11:09:58 浏览: 67
下面是用C语言实现的完整的二叉树代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
};
struct TreeNode* createNode(int data) {
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
void insert(struct TreeNode** root, int data) {
if (*root == NULL) {
*root = createNode(data);
return;
}
if (data < (*root)->data) {
insert(&(*root)->left, data);
} else {
insert(&(*root)->right, data);
}
}
void inorder(struct TreeNode* root) {
if (root != NULL) {
inorder(root->left);
printf("%d ", root->data);
inorder(root->right);
}
}
int main() {
struct TreeNode* root = NULL;
insert(&root, 50);
insert(&root, 30);
insert(&root, 70);
insert(&root, 20);
insert(&root, 40);
insert(&root, 60);
insert(&root, 80);
printf("Inorder traversal of the binary search tree is: ");
inorder(root);
printf("\n");
return 0;
}
```
在这个代码示例中,我们定义了一个 `struct TreeNode` 结构体表示二叉树的每个节点,包含 `data` 表示节点存储的数据,以及 `left` 和 `right` 指针表示左右子树。
我们定义了 `createNode` 函数用于创建一个新的节点,该函数接受一个整数参数 `data` 表示要创建的节点存储的数据。
我们定义了 `insert` 函数用于向二叉树中插入新的节点。该函数接受一个指向根节点指针的指针 `root` 和要插入的数据 `data`,如果根节点为空,则直接将新节点作为根节点插入,否则根据数据的大小关系递归插入左或右子树中。
我们定义了 `inorder` 函数用于中序遍历二叉树,该函数接受一个指向根节点的指针 `root`,如果节点不为空,则先递归遍历左子树,然后输出节点的数据,最后递归遍历右子树。
在 `main` 函数中,我们创建了一个指向根节点的指针 `root`,然后插入一些数据,最后调用 `inorder` 函数中序遍历二叉树并输出结果。
以上就是用C语言实现的完整的二叉树代码示例,希望对你有所帮助!
阅读全文