c语言,用顺序表作存储结构,生成二叉排序树
时间: 2023-11-06 22:34:04 浏览: 125
下面是用 C 语言实现顺序表作为存储结构生成二叉排序树的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// 二叉树节点结构体
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 顺序表结构体
typedef struct SeqList {
int data[MAX_SIZE];
int length;
} SeqList;
// 从顺序表中生成二叉排序树
void createBST(SeqList list, TreeNode** root) {
int i;
for (i = 0; i < list.length; i++) {
int data = list.data[i];
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = data;
node->left = NULL;
node->right = NULL;
if (*root == NULL) {
*root = node;
} else {
TreeNode* p = *root;
while (p != NULL) {
if (data < p->data) {
if (p->left == NULL) {
p->left = node;
break;
} else {
p = p->left;
}
} else {
if (p->right == NULL) {
p->right = node;
break;
} else {
p = p->right;
}
}
}
}
}
}
// 中序遍历二叉树
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->data);
inorderTraversal(root->right);
}
int main() {
SeqList list = {{7, 2, 8, 1, 5, 3, 6, 4}, 8};
TreeNode* root = NULL;
createBST(list, &root);
inorderTraversal(root);
return 0;
}
```
以上代码实现了从顺序表中生成二叉排序树,并对二叉排序树进行中序遍历输出。
阅读全文