树的存储与前序遍历
wangbinfeng · · 算法·理论
有bug,抽空调
//by wangbinfeng
#include<iostream>
#include<cstdio>
using namespace std;
struct node{
int left,right,father;
bool have;
node(){
left=-1;
right=-1;
father=-1;
have=false;
}
}dat[30];
int n,root;
char l,r,f,c;
void dfs(int now){
cout<<char(now+'a');
if(dat[now].left!=-1)dfs(dat[now].left);
if(dat[now].right!=-1)dfs(dat[now].right);
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
c=getchar();
while(c<'a'||c>'z')c=getchar();
f=c;
l=getchar();
r=getchar();
dat[f-'a'].left=(l=='*' ? -1 : l-'a');
dat[f-'a'].right=(r=='*' ? -1 : r-'a');
if(l!='*')dat[l-'a'].father=f-'a';
if(r!='*')dat[r-'a'].father=f-'a';
dat[i].have=true;
}
for(int i=0;i<26;i++){
if(dat[i].father==-1&&dat[i].have==true)root=i;
}
root=0;
dfs(root);
}