用顺序存储结构创建n个结点的二叉树,编写算法实现对该二叉树进行先序遍历,输出先序遍历序列。
时间: 2023-06-14 16:05:33 浏览: 112
各种二叉树的数据结构.rar_二叉树_二叉树 遍历_实现二叉树的先、中、后序递归遍历算_数据结构_数据结构 算法
假设二叉树的结点数据类型为 `ElemType`,则先序遍历的算法如下:
```c
void PreOrderTraverse(ElemType *tree, int index)
{
// 输出当前结点的值
printf("%c ", tree[index]);
// 遍历左子树
if (2 * index + 1 < n && tree[2 * index + 1] != '#') {
PreOrderTraverse(tree, 2 * index + 1);
}
// 遍历右子树
if (2 * index + 2 < n && tree[2 * index + 2] != '#') {
PreOrderTraverse(tree, 2 * index + 2);
}
}
```
其中,`tree` 是存储二叉树的数组,`index` 是当前结点在数组中的下标,`n` 是二叉树的结点数目。`#` 表示空结点。
遍历过程中,先输出当前结点的值,然后递归遍历左子树和右子树。注意要判断左子树和右子树是否存在,以及它们的下标是否越界。
阅读全文