ACM-2차 트리

2897 단어
9도 oj 주소: 링크 열기 클릭
제목 1184: 두 갈래 나무가 두루 다니다
시간 제한: 1초
메모리 제한: 32메가바이트
특수 판제: 아니요
제출: 1562
해결
제목 설명:
사용자가 입력한 일련의 선행 문자열을 읽고 이 문자열에 따라 두 갈래 트리를 만들 수 있는 프로그램을 만듭니다.예를 들어 ABC##DE#G##F#####에서 "#"은 공백을 나타내고 공백 문자는 빈 트리를 나타냅니다.이 두 갈래 나무를 세운 후, 두 갈래 나무에 대해 중순으로 훑어보고, 훑어보는 결과를 출력합니다.
입력:
입력은 100을 넘지 않는 문자열 1행을 포함합니다.
출력:
여러 그룹의 테스트 데이터가 있을 수 있습니다. 각 그룹의 데이터에 대해 출력은 입력 문자열을 두 갈래 트리 뒤에 있는 서열을 만들고 문자 뒤에 공백이 있습니다.출력 결과마다 한 줄을 차지한다.
샘플 입력:
abc##de#g##f###

샘플 출력:
c b e g d f a 

출처:
2002년 화중과학기술대학 컴퓨터 연구 생기시험 진제
/********************************* 
* 날짜: 2013-3-7
* 작성자: SJF0115
*문제번호: 9도 OJ 문제 1184: 두 갈래 나무가 두루 다닌다
* 출처:http://ac.jobdu.com/problem.php?pid=1184 
* 결과: AC
*출처: 2002년 화중과학기술대학 컴퓨터 연구 생기시험 진제
*요약:
**********************************/  
#include  
#include  
#include  
  
char array[101];  
  
//두 갈래 나무 결점
typedef struct BiTNode{  
    char data;  
    struct BiTNode *lchild,*rchild;  
}BiTNode,*BiTree;  
  
//순서대로 두 갈래 트리를 만듭니다
int CreateBiTree(BiTree &T,int &index,int &n){  
    if(index == n){  
        return 0;  
    }  
//두 갈래 트리의 결점 값 (한 문자) 을 선착순으로 입력하고'#'은 빈 트리를 나타냅니다
    if(array[index] == '#'){  
        T = NULL;  
        index++;  
    }  
    else{  
        T = (BiTree)malloc(sizeof(BiTNode));  
//루트 결점을 생성합니다
        T->data = array[index];  
        index++;  
//왼쪽 트리를 구성합니다
        CreateBiTree(T->lchild,index,n);  
//구조 우자수
        CreateBiTree(T->rchild,index,n);  
    }  
    return 0;  
}  
//출력
void Visit(BiTree T){  
    if(T->data != '#'){  
        printf("%c ",T->data);  
    }  
}  
//중순으로 두루 다니다
int InOrder(BiTree T){  
    if(T != NULL){  
//왼쪽 하위 결점에 액세스합니다
        InOrder(T->lchild);  
//루트 노드에 액세스합니다
        Visit(T);  
//오른쪽 하위 결점에 액세스합니다
        InOrder(T->rchild);  
    }  
    return 0;  
}  
int main()  
{  
    int len,index;  
    while(scanf("%s",array) != EOF){  
        BiTree T;  
        len = strlen(array);  
        index = 0;  
//두 갈래 트리를 생성합니다
        CreateBiTree(T,index,len);  
//중순으로 두루 다니다
        InOrder(T);  
        printf("");  
    }  
    return 0;  
}  


  • 참조:http://blog.csdn.net/sjf0115/article/details/8645571

    좋은 웹페이지 즐겨찾기