创建并存储一颗二叉树,要求从键盘输入各节点信息,存储方式为顺序存储(C语言)
时间: 2024-10-26 16:16:36 浏览: 18
C语言 二叉树的链式存储实例
5星 · 资源好评率100%
在C语言中,创建并存储一棵二叉树采用顺序存储通常是指将二叉树的节点按照层次顺序(先根遍历、中序遍历或后根遍历)存储在一个一维数组中,这是因为我们可以利用每个节点的左右孩子索引来表示其在树结构中的位置。
以下是简单的步骤:
1. 定义结构体`Node`,包含数据域`data`和指向左右孩子的指针`left`和`right`。
```c
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
```
2. 使用一个整型数组`treeArray`来存储二叉树的节点,其中数组下标对应节点的位置,左孩子通常是2x当前节点索引+1,右孩子则是2x当前节点索引+2。
```c
int treeSize = sizeof(treeArray) / sizeof(Node); // 数组大小
```
3. 编写函数用于获取用户输入,并分配新节点到数组中。
```c
void insertNode(Node** root, int index) {
printf("Enter value for node %d: ", index);
scanf("%d", &(*root)->data);
if (index > treeSize) {
Node* newNode = (Node*)malloc(sizeof(Node));
*root = newNode;
return;
}
if ((*root)->left == NULL && (*root)->right == NULL) {
(*root)->left = treeArray + (2 * index + 1);
(*root)->right = treeArray + (2 * index + 2);
} else if ((*root)->left != NULL) {
insertNode(&(*root)->left, 2 * index + 1);
} else {
insertNode(&(*root)->right, 2 * index + 2);
}
}
```
4. 用户可以多次调用`insertNode`函数,直到输入结束。
5.
阅读全文