c语言实现,用顺序存储结构来存储一颗具有n个结点的二叉树,编写算法实现对该二叉树进行先序遍历,输出先序遍历序列。
时间: 2023-06-14 17:06:28 浏览: 135
中序遍历算法-2012C语言程序设计辅导
以下是用顺序存储结构实现二叉树先序遍历的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct {
ElemType data[MAXSIZE];
int length;
} SqList;
// 构建二叉树
void createBiTree(SqList *L, int i) {
if (i > L->length)
return;
scanf("%d", &L->data[i]);
createBiTree(L, 2 * i);
createBiTree(L, 2 * i + 1);
}
// 先序遍历
void preOrder(SqList L, int i) {
if (i <= L.length) {
printf("%d ", L.data[i]);
preOrder(L, 2 * i);
preOrder(L, 2 * i + 1);
}
}
int main() {
SqList L;
int n;
printf("请输入二叉树的结点个数:");
scanf("%d", &n);
L.length = n;
printf("请按照顺序输入二叉树的结点数据:");
createBiTree(&L, 1);
printf("先序遍历序列为:");
preOrder(L, 1);
printf("\n");
return 0;
}
```
在这个程序中,我们定义了一个结构体SqList来存储二叉树的结点数据。createBiTree函数通过递归的方式构建二叉树,preOrder函数则通过递归实现先序遍历,输出先序遍历序列。
该程序的时间复杂度为O(n),空间复杂度为O(n)。
阅读全文