TRAVERSAL을 연결리스트를 활용하여 풀었습니다. 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 이진 검색 트리를 구현하신 것 같은데, 이 문제와 이진 검색 트리는 관계가 없습니다. 9년 전 link ita9naiwa 전위 순회 결과가 동일한 트리는 여러개 있어요 9년 전 link ksh92315 답변감사합니다!!! 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
ksh92315
TRAVERSAL
을 연결리스트를 활용하여 풀었습니다.
전위순회 입력을 할 때 순서로 트리를 만들면
중위순회를 굳이 입력안해도 후위순회를 구할수 있다는 사실을 발견했습니다.
제 코드는 전위순회를 입력하여 트리에 바로바로 넣은뒤
중위순회입력은 그냥 입력만 받고 흘려버리고 바로 후위순회를 구하는 코드입니다.
자꾸 오답이 나오는데 어디서 무엇이 잘못됬는지 알 수가없어서 그런데
혹시 어디가 잘못 인지 알수 있을까요?
9년 전