用顺序存储结构来存储一颗具有n个结点的二叉树,编写算法实现对该二叉树进行先序遍历,输出先序遍历序列。用C语言解答
时间: 2023-06-16 21:03:36 浏览: 196
二叉树的存储结构和遍历算法
5星 · 资源好评率100%
以下是使用顺序存储结构实现的二叉树先序遍历算法,其中假设二叉树的结点数据类型为int类型,用数组来存储二叉树的结点信息。
```c
#include <stdio.h>
#define MAXSIZE 100 // 二叉树最大结点数
int tree[MAXSIZE]; // 用数组存储二叉树
// 先序遍历
void preorder(int index) {
if (index < MAXSIZE && tree[index] != -1) { // 判断结点是否存在
printf("%d ", tree[index]); // 先访问根结点
preorder(2*index+1); // 遍历左子树
preorder(2*index+2); // 遍历右子树
}
}
int main() {
int n, i;
printf("Enter the number of nodes in the binary tree: ");
scanf("%d", &n);
printf("Enter the value of each node (-1 means the node is empty):\n");
for (i = 0; i < n; i++) {
scanf("%d", &tree[i]);
}
printf("The preorder traversal sequence of the binary tree is: ");
preorder(0); // 从根结点开始先序遍历
printf("\n");
return 0;
}
```
需要注意的是,顺序存储结构不适用于高度不固定的二叉树,因为会浪费大量的存储空间。如果需要动态地创建二叉树,应该使用链式存储结构。
阅读全文