二叉树顺序存储结构c
时间: 2023-12-10 10:33:16 浏览: 87
二叉树的顺序存储结构是将二叉树的每个节点按照层次顺序存储在一维数组中,对于完全二叉树,可以用数组来存储,对于非完全二叉树,可以用0来占位。下面是一个简单的二叉树顺序存储结构的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct TreeNode {
char data;
} TreeNode;
TreeNode* createTree(char arr[], int i, int n) {
if (i >= n || arr[i] == '#') {
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = arr[i];
root->left = createTree(arr, 2 * i + 1, n);
root->right = createTree(arr, 2 * i + 2, n);
return root;
}
void preOrder(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%c ", root->data);
preOrder(root->left);
preOrder(root->right);
}
int main() {
char arr[MAXSIZE];
printf("请输入二叉树的层次遍历序列:\n");
scanf("%s", arr);
TreeNode* root = createTree(arr, 0, strlen(arr));
printf("先序遍历结果为:\n");
preOrder(root);
return 0;
}
```
上述代码中,我们首先定义了一个结构体`TreeNode`,表示二叉树的节点,其中`data`表示节点的数据。然后我们定义了一个`createTree`函数,用于根据输入的层次遍历序列构建二叉树。在`createTree`函数中,我们首先判断当前节点是否为空或者为`#`,如果是则返回`NULL`,否则创建一个新的节点,并递归构建左右子树。最后,我们定义了一个`preOrder`函数,用于先序遍历二叉树,并输出每个节点的数据。在`main`函数中,我们首先读入输入的层次遍历序列,然后调用`createTree`函数构建二叉树,最后调用`preOrder`函数输出先序遍历结果。
阅读全文