정렬 이 진 트 리 의 생 성 주의 중복 요소

think: 1 정렬 이 진 트 리 를 만 들 때 반복 요소 sdut 원 제 링크 트 리 구조 연습 - 정렬 이 진 트 리 의 중간 순서 옮 겨 다 니 기 Time Limit: 1000 MS Memory Limit: 65536 KB
Problem Description 트 리 구조 에서 특수 한 이 진 트 리 를 정렬 이 진 트 리 라 고 합 니 다. 직관 적 인 이 해 는 바로 - (1) 입 니 다. 각 노드 에 하나의 관건 값 (2) 이 포함 되 어 있 습 니 다. 임의의 노드 의 왼쪽 트 리 (존재 한다 면) 의 관건 값 은 이 노드 의 관건 값 (3) 보다 작 습 니 다. 임의의 노드 의 오른쪽 트 리 (존재 한다 면)의 관건 치 는 이 노드 의 관건 치보다 크다.현재 한 그룹의 데 이 터 를 지정 합 니 다. 이 데 이 터 를 지정 한 순서에 따라 정렬 이 진 트 리 를 만 들 고 그 순서 로 옮 겨 다 니 는 결 과 를 출력 하 십시오.
Input 입력 은 여러 그룹의 데 이 터 를 포함 하고 각 그룹의 데이터 형식 은 다음 과 같 습 니 다.첫 번 째 줄 은 하나의 정수 n 을 포함 하고 관건 적 인 값 의 개 수 를 포함 하 며 관건 적 인 값 은 정수 로 표시 합 니 다.(n < = 1000) 두 번 째 줄 은 n 개의 정 수 를 포함 하고 모든 정수 가 int 범위 안에 있 도록 합 니 다.
출력 은 주어진 데이터 에 정렬 이 진 트 리 를 만 들 고 그 중 순서 로 결 과 를 출력 하 며 출력 마다 한 줄 을 차지 합 니 다.
Example Input 1 2 2 1 20
Example Output 2 1 20
Hint 1 반복 요소 주의 Author 조리 강
다음은 accepted 코드 입 니 다.
#include 
#include 
#include 
typedef struct node
{
    int date;
    struct node *left;
    struct node *right;
} BinTree;
int flag, n, a[1400];
BinTree * Insert(BinTree *rt, int x)//          
{
    if(!rt) /*      ,               */
    {
        rt = (BinTree *)malloc(sizeof(BinTree));
        rt->date = x;
        rt->left = rt->right = NULL;
    }
    else  /*            */
    {
        if(x < rt->date)
            rt->left = Insert(rt->left, x);//       
     ///else if(x > rt->date)/*wrong answer*/
        else
            rt->right = Insert(rt->right, x);//       
    }
    return rt;
}
void mid_put(BinTree *rt)//      
{
    if(rt)
    {
        mid_put(rt->left);//     
        a[flag++] = rt->date;
        mid_put(rt->right);//     
    }
}
int main()
{
    int i, x;
    while(scanf("%d", &n) != EOF)
    {
        if(n > 0)
        {
            BinTree *root = NULL;
            flag = 0;
            for(i = 0; i < n; i++)
            {
                scanf("%d", &x);
                root = Insert(root, x);
            }
            mid_put(root);
            for(i = 0; i < flag; i++)
            {
                printf("%d%c", a[i], i == flag-1? '
'
: ' '); } } } return 0; } /*************************************************** User name: jk160630 Result: Accepted Take time: 0ms Take Memory: 128KB Submit time: 2017-02-08 17:07:08 ****************************************************/

좋은 웹페이지 즐겨찾기