给出一颗二叉树,要求输出该树的前序遍历,关键在于如何建树。
#include <iostream>
using namespace std;
struct node {
char data;
int l;
int r;
bool flag;
};
struct node arr[1001];
void print( int x ) {
if ( x==0 )
return;
else {
cout << arr[x].data;
print(arr[x].l);
print(arr[x].r);
}
}
int main()
{
// struct node arr[1001];
int index;
int i,j,n,k;
int temp[1001];
//l=0;
while ( cin >> n ) {
for ( i=0;i<n;i++ ) {
cin >> index;
temp[i]=index;
cin >> arr[temp[i]].data >> arr[temp[i]].l >> arr[temp[i]].r;
arr[temp[i]].flag = true;
}
for ( i=0;i<n;i++ ) {
j=arr[temp[i]].l;
k=arr[temp[i]].r;
arr[j].flag=false;
arr[k].flag=false;
}
for ( i=0;i<n;i++ ) {
if ( arr[temp[i]].flag == true )
break;
}
print(temp[i]);
cout << endl;
}
return 0;
}