2014 Problem D 두 갈래 트리 훑어보기

1397 단어 경험 총결

문제 D:두 갈래 나무 두루 다니기


시간 제한: 1Sec 메모리 제한: 32MB 커밋: 60 해결: 41

제목 설명


사용자가 입력한 일련의 선행 문자열을 읽고 이 문자열에 따라 두 갈래 트리를 만들 수 있는 프로그램을 만듭니다.예를 들어 ABC##DE#G##F#####에서 "#"은 공백을 나타내고 공백 문자는 빈 트리를 나타냅니다.이 두 갈래 나무를 세운 후, 두 갈래 나무에 대해 중순으로 훑어보고, 훑어보는 결과를 출력합니다.

입력


입력은 100을 넘지 않는 문자열 1행을 포함합니다.
 

출력


여러 그룹의 테스트 데이터가 있을 수 있습니다. 각 그룹의 데이터에 대해 출력은 입력 문자열을 두 갈래 트리 뒤에 있는 서열을 만들고 문자 뒤에 공백이 있습니다.출력 결과마다 한 줄을 차지한다.
 

샘플 입력

a#b#cdef#####
a##

샘플 출력

a b f e d c 
a 

경험 총결


이 문제는 어려운 점도 없다. 바로 구성할 때 전역 변수로 접근을 제어하는 수조 아래 표시를 주의하여 접근 오류를 방지하면 다른 것은 아무것도 없다.

정확한 코드

#include 
const int maxn=200;
char pre[maxn];
int index;
struct node
{
    char data;
    node *lchild;
    node *rchild;
};
void in(node * root)
{
	if(root==NULL)
		return;
	in(root->lchild);
	printf("%c ",root->data);
	in(root->rchild);
}
node * create()
{
	if(pre[index]=='#')
	{
		index++;
		return NULL;
	}
	node * p=new node;
	p->data=pre[index];
	index++;
	p->lchild=create();
	p->rchild=create();
	return p;
}
int main()
{
    while(~scanf("%s",pre))
    {
    	index=0;
    	node *root=create();
    	in(root);
    	printf("
"); } return 0; }

좋은 웹페이지 즐겨찾기