7-11 두 갈래 나무 돌리기(25분)
2701 단어 ACM--트리CCCC 엘리베이터
7-11 두 갈래 나무 돌리기(25분)
두 갈래 나무의 중차순과 전차순을 정해 주십시오. 먼저 나무를 거울로 반전시킨 다음에 반전된 층차순의 서열을 출력해 주십시오.거울 반전이란 모든 비엽결점의 좌우 아이를 맞바꾸는 것을 말한다.여기서 키 값이 서로 같지 않은 정수라고 가정합니다.
형식 입력:
첫 번째 줄을 입력하면 정수
N
(≤30)가 두 갈래 나무의 결점 개수입니다.두 번째 줄은 그 중의 서열을 반복한다.세 번째 줄은 앞의 순서를 반복해서 보여 준다.숫자 사이는 공백으로 구분된다.출력 형식:
한 줄에서 이 트리가 반전된 후 겹쳐진 시퀀스를 출력합니다.숫자 사이는 1개의 공백으로 구분되며, 줄의 앞뒤에 여분의 공백이 있어서는 안 된다.
샘플 입력:
7
1 2 3 4 5 6 7
4 1 3 2 6 5 7
내보내기 예제:
4 6 1 7 5 3 2
#include
using namespace std;
int zhong[1000],qian[1000];
struct node{
int data;
struct node *left,*right;
};
/*
struct node *creat(int z,int q,int n){
struct node *T;
int i;
if(n<=0){
T=NULL;
}
else{
T=(struct node *)malloc(sizeof(struct node));
T->data=qian[q];
for(i=0;zhong[i]!=qian[i+z];i++);
T->left=creat(z,q+1,i);
T->right=creat(z+i+1,q+i+1,n-i-1);
}
return T;
}
*/
struct node *creat(int q,int z,int n){ //
struct node *T;
int i;
if(n<=0){
T=NULL;
}
else{
T=(struct node *)malloc(sizeof(struct node));
T->data=qian[q];
for(i=0;zhong[i+z]!=qian[q];i++);
T->left=creat(q+1,z,i);
T->right=creat(q+i+1,z+i+1,n-i-1);
}
return T;
}
struct node *change(struct node *T){ //
struct node *t;
if(T){
if(T->left!=NULL || T->right!=NULL){
t=T->left;
T->left=T->right;
T->right=t;
}
change(T->left);
change(T->right);
}
return T;
}
void cengci(struct node *T,int n){ //
struct node *q[100],*p;
int f=0,r=0,cnt=0;
if(T){
q[r++]=T;
while(f!=r){
p=q[f++];
printf("%d",p->data);
cnt++;
if(cnt!=n){
cout<left!=NULL)
q[r++]=p->left;
if(p->right!=NULL)
q[r++]=p->right;
}
}
}
int main(){
struct node *T;
int i,n;
cin>>n;
for(i=0;i>zhong[i];
}
for(i=0;i>qian[i];
}
T=creat(0,0,n);
T=change(T);
cengci(T,n);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
L2-011. 두 갈래 나무를 가지고 놀다시간 제한 400 ms 메모리 제한 사항 65536 kB 코드 길이 제한 8000 B 판정 절차 Standard 작자 진부하다 두 갈래 나무의 중차순과 전차순을 정해 주십시오. 먼저 나무를 거울로 반전시킨 다음에 반...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.