二叉排序树C语言数组代码
时间: 2023-07-20 10:11:14 浏览: 51
以下是一个简单的二叉排序树的C语言数组代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
// 定义二叉树结构体
typedef struct TreeNode {
int value;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 定义二叉树数据结构
typedef struct BinaryTree {
TreeNode* root;
int size;
} BinaryTree;
// 初始化二叉树
void init(BinaryTree* tree) {
tree->root = NULL;
tree->size = 0;
}
// 创建一个新的二叉树节点
TreeNode* create_node(int value) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->value = value;
node->left = NULL;
node->right = NULL;
return node;
}
// 将值插入到二叉树中
void insert(BinaryTree* tree, int value) {
TreeNode* node = create_node(value);
if (tree->root == NULL) {
tree->root = node;
tree->size++;
return;
}
TreeNode* current = tree->root;
while (current != NULL) {
if (value < current->value) {
if (current->left == NULL) {
current->left = node;
tree->size++;
return;
}
current = current->left;
} else {
if (current->right == NULL) {
current->right = node;
tree->size++;
return;
}
current = current->right;
}
}
}
// 中序遍历二叉树
void inorder(TreeNode* node) {
if (node == NULL) {
return;
}
inorder(node->left);
printf("%d ", node->value);
inorder(node->right);
}
// 打印二叉树
void print(BinaryTree* tree) {
printf("Binary Tree: ");
inorder(tree->root);
printf("\n");
}
int main() {
// 创建一个新的二叉树
BinaryTree tree;
init(&tree);
// 插入一些值
insert(&tree, 50);
insert(&tree, 30);
insert(&tree, 70);
insert(&tree, 20);
insert(&tree, 40);
insert(&tree, 60);
insert(&tree, 80);
// 打印二叉树
print(&tree);
return 0;
}
```
在此代码中,我们使用了一个结构体来表示二叉树和每个节点。我们还定义了一些函数来实现初始化,插入和打印二叉树。我们使用了中序遍历来打印二叉树中的所有值。这段代码可以让你更好地理解二叉排序树的工作方式。