TRAVERSAL을 연결리스트를 활용하여 풀었습니다.

  • ksh92315
    ksh92315

    TRAVERSAL
    을 연결리스트를 활용하여 풀었습니다.
    전위순회 입력을 할 때 순서로 트리를 만들면
    중위순회를 굳이 입력안해도 후위순회를 구할수 있다는 사실을 발견했습니다.
    제 코드는 전위순회를 입력하여 트리에 바로바로 넣은뒤
    중위순회입력은 그냥 입력만 받고 흘려버리고 바로 후위순회를 구하는 코드입니다.
    자꾸 오답이 나오는데 어디서 무엇이 잘못됬는지 알 수가없어서 그런데
    혹시 어디가 잘못 인지 알수 있을까요?

    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    
    typedef struct LinkedList{
        int data;
        struct LinkedList *left;
        struct LinkedList *right;
    }LinkedList;
    
    void insert_node(LinkedList **node,int data)
    {   
        LinkedList *pNode,*temp,*n;
        temp = *node;
        pNode=NULL;
        while(temp!=NULL){
            if(temp->data == data)
                return;
    
            pNode=temp;
            if(temp->data > data)
                temp = temp->left;
            else if(temp->data < data)
                temp = temp->right;
        }
        n = (LinkedList *)malloc(sizeof(LinkedList));
    
        n->data = data;
        n->left = n->right=NULL;
        if(pNode!=NULL)
            if(pNode->data >data)
                pNode->left =n;
            else
                pNode->right = n;
        else
            *node=n;
    }
    void postorder(LinkedList *node){
        if(node!=NULL) {
    
            postorder(node->left);      
            postorder(node->right);
            printf("%d ",node->data);
        }
    }
    int main()
    {   
        int test,count,i,data;
        LinkedList *root=NULL; 
    
        scanf("%d",&test);
    
        while(test--){
            scanf("%d",&count);
            for(i=0;i<count;i++)
            {
                scanf("%d",&data);
                insert_node(&root,data);
            }
            for(i=0;i<count;i++)
                scanf("%d",&data);      
    
            postorder(root);
            printf("\n");
            root= NULL;     
        }
        return 0;
    }
    

    9년 전
3개의 댓글이 있습니다.
  • amok
    amok

    이진 검색 트리를 구현하신 것 같은데, 이 문제와 이진 검색 트리는 관계가 없습니다.


    9년 전 link
  • ita9naiwa
    ita9naiwa

    전위 순회 결과가 동일한 트리는 여러개 있어요


    9년 전 link
  • ksh92315
    ksh92315

    답변감사합니다!!!


    9년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.