数据结构实验(C++)
PS:仅数据结构实验记录
题目:一棵完全二叉树以顺序方式存储,设计一个递归算法,对该完全二叉树进 行中序遍历。
//头文件代码
Tree.h
#pragma once
#include<iostream>
using namespace std;
const int Max_Size = 100;
template <typename DataType>
class Tree
{
public:
Tree(); //构造函数
~Tree() {} //析构函数
void MidOrder(int i); //中序遍历
private:
DataType data[Max_Size];
int biTreeNum;
};
//cpp部分代码
Tree.cpp
#include"Tree.h"
template <typename DataType>
Tree<DataType>::Tree() //构造函数
{
biTreeNum = 0;
bool flags = true;
while (flags)
{
cout << "请输入数据:";
DataType x;
cin >> x;
if (x != '#' && biTreeNum < Max_Size)
{
biTreeNum++;
data[biTreeNum] = x;
}
else
{
flags = false;
}
}
}
//递归中序遍历
template <typename DataType>
void Tree<DataType>::MidOrder(int i)
{
if (i == 0)
return;
else
{
if (2 * i <= biTreeNum) //遍历左子树
MidOrder(2 * i);
else
MidOrder(0);
cout << data[i] << "\t";
if (2 * i + 1 <= biTreeNum) //遍历右子树
MidOrder(2 * i + 1);
else
MidOrder(0);
}
}
//测试代码
int main() {
cout << "请输入完全二叉树数据(以#代表结尾):";
Tree<char> T;
cout << "\n完全二叉树的中序遍历为:\t";
T.MidOrder(1);
return 0;
}
测试结果
1)测试图:
2)截图