这是一个关于用顺序存储结构来存储一颗具有n个结点的二叉树,编写算法实现对该二叉树进行先序遍历,输出先序遍历序列的问题。完整代码
时间: 2023-06-14 20:05:59 浏览: 103
以下是用顺序存储结构来存储一颗具有n个结点的二叉树,编写算法实现对该二叉树进行先序遍历,输出先序遍历序列的完整代码:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100;
template <typename T>
struct SqBinaryTree
{
T data[MAXSIZE]; // 存储结点数据的数组
int length; // 二叉树的结点数
SqBinaryTree() : length(0) {} // 构造函数,初始化结点数为0
};
// 先序遍历
template <typename T>
void preOrder(SqBinaryTree<T>& tree, int i)
{
if (i >= tree.length) // 如果结点i越界,则返回
return;
cout << tree.data[i] << " "; // 输出结点i的数据
preOrder(tree, 2 * i + 1); // 遍历左子树
preOrder(tree, 2 * i + 2); // 遍历右子树
}
int main()
{
SqBinaryTree<int> tree;
tree.data[0] = 1; // 根节点
tree.data[1] = 2; // 左子节点
tree.data[2] = 3; // 右子节点
tree.data[3] = 4; // 左子节点的左子节点
tree.data[4] = 5; // 左子节点的右子节点
tree.data[5] = 6; // 右子节点的左子节点
tree.data[6] = 7; // 右子节点的右子节点
tree.length = 7; // 一共7个结点
cout << "先序遍历序列为:";
preOrder(tree, 0);
return 0;
}
```
运行结果:
```
先序遍历序列为:1 2 4 5 3 6 7
```
阅读全文