1.题目:
Problem Description
给你一个采用顺序存储结构的二叉树,请你设计一个算法求出它的前序遍历。
Input
输入数据有多组,每组的第一行为一个正数n,表示该二叉树的节点个数。
接下来有n个字符,表示各个位置上的元素,当字符为'#'时表示当前节点为空。
接下来有n个字符,表示各个位置上的元素,当字符为'#'时表示当前节点为空。
Output
输出该二叉树的前序遍历
Sample Input
6
ABCDEF
6
ABC#DE
Sample Output
ABDECF
ABDCE
2.参考代码:
#include <iostream>
using namespace std;
char str[1111];
void PreOrder(int i,int n){
if(str[i]!='#')
cout<<str[i];
if(2*i<=n)
PreOrder(2*i,n); ///遍历左孩子
if(2*i+1<=n)
PreOrder(2*i+1,n); ///遍历右孩子
}
int main()
{
int n;
while(cin>>n)
{
cin>>str+1;
PreOrder(1,n);
cout<<endl;
}
return 0;
}