AcWing 1256. 扩展二叉树(正常思路)
原题链接
简单
作者:
cxywu
,
2021-03-06 23:59:51
,
所有人可见
,
阅读 421
C++ 代码
#include<iostream>
#include<string>
using namespace std;
#define N 10000000
int r[N],l[N];
string s;
void creaFist(string s,int &root){
if(s[root]=='.'){
r[root]=-1;
l[root]=-1;
return;
}
if(root>=s.size())return;
int temp = root;
r[temp] = ++root;
creaFist(s,root);
l[temp] = ++root;
creaFist(s,root);
}
void showR(int root){
if(root<0)return;
if(s.size()<=root)return;
showR(r[root]);
if(s[root]!='.')
cout<<s[root];
showR(l[root]);
}
void showH(int root){
if(root<0)return;
if(s.size()<=root)return;
showH(r[root]);
showH(l[root]);
if(s[root]!='.')
cout<<s[root];
}
int main(){
r[0]=-1;
l[0]=-1;
cin>>s;
int a = 0;
creaFist(s,a);
showR(0);
cout<<endl;
showH(0);
}