【问题描述】课后作业习题25:n个结点的完全二叉树顺序存储在一维数组a中,设计一个算法,实现对此二叉树的先序遍历。
【输入形式】一维数组a,以#结束输入,请接收后存储在一维数组a中
【输出形式】先序遍历序列
【样例输入】ABCDEF#
【样例输出】ABDECF
#include <iostream>
using namespace std;
struct node
{
char data;
node *l, *r;
};
char cp[101];
node *creat(int s, int n)
{
if (s <= n)
{
node *root = new node;
root->data = cp[s - 1];
root->l = creat(2 * s, n);
root->r = creat(2 * s + 1, n);
return root;
}
else
return NULL;
}
void qianxu(node *root)
{
if (root)
{
cout << root->data;
qianxu(root->l);
qianxu(root->r);
}
}
int main()
{
int i = 0;
while (1)
{
cin >> cp[i];
if (cp[i] == '#')
break;
i++;
}
node *root = creat(1, i);
qianxu(root);
}