题目描述
任意二叉树可以根据完全二叉树性质保存在一个数组中。已知二叉树的数组存储,用程序构建该二叉树。
提示:用递归方法或非递归都可以
输入
第一行输入一个整数t,表示有t个测试数据
第二行起输入二叉树的数组存储结果,空树用字符‘0’表示,输入t行
数组的数据由大写字母和0表示
输入样例:
3
ABC0D
ABCDEF000G
ABEC0F0D0
输出
逐行输出每个二叉树的先序遍历结果
输出样例:
ABDC
ABDEGCF
ABCDEF
代码
#include <iostream>
using namespace std;
class Tree{
public:
int len;
char *arr;
string s;
Tree(){
cin >> s;
len = s.length();
arr = new char[len];
}
void create(){
for(int i = 0; i < len; i++){
arr[i] = s[i];
}
}
void DLR(int i){
if(arr[i] == '0' || i > len-1){
return;
}else{
cout << arr[i];
}
DLR(2*i+1);
DLR((i+1)*2);
}
};
int main()
{
int t;
cin >> t;
while(t--){
Tree tree;
tree.create();
tree.DLR(0);
cout << endl;
}
return 0;
}