PAT 1012Invert a Binary Tree 반전 두 갈래 트리(반전 트리, 레이어 순서, 중간 순서)
제목은 두 갈래 트리를 지정합니다. 반전 후 두 갈래 트리의 층차 역행 서열과 중차 역행 서열을 출력해야 합니다.
반전 조작에 관해서는 후순이나 선순이 모두 가능하다
#include
#define rep(i,a,n) for(int i=a;inode[N];
vectorans,res;
void gao(int root){
if(root==-1) return ;
gao(node[root].x);
gao(node[root].y);
swap(node[root].x,node[root].y);
}
void bfs(int root){
queueq;
q.push(root);
while(!q.empty()){
int p=q.front();
q.pop();
ans.push_back(p);
if(node[p].x!=-1) q.push(node[p].x);
if(node[p].y!=-1) q.push(node[p].y);
}
rep(i,0,ans.size())
printf("%d%c",ans[i],i==ans.size()-1?'
':' ');
}
void dfs(int root){
if(node[root].x!=-1)dfs(node[root].x);
res.push_back(root);
if(node[root].y!=-1)dfs(node[root].y);
return ;
}
int vis[N];
int main(){
cin>>n;
rep(i,0,n) {
char a,b;
cin>>a>>b;
if(a!='-') node[i].x=a-'0',vis[a-'0']=1;
else node[i].x=-1;
if(b!='-') node[i].y=b-'0',vis[b-'0']=1;
else node[i].y=-1;
}
int root=0;
while(vis[root]) root++;
gao(root);
bfs(root);
dfs(root);
rep(i,0,res.size())
printf("%d%c",res[i],i==res.size()-1?'
':' ');
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PAT 1012Invert a Binary Tree 반전 두 갈래 트리(반전 트리, 레이어 순서, 중간 순서)전송 제목은 두 갈래 트리를 지정합니다. 반전 후 두 갈래 트리의 층차 역행 서열과 중차 역행 서열을 출력해야 합니다. 반전 조작에 관해서는 후순이나 선순이 모두 가능하다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.