BST 만들기
반 친구들의 명단을 입력받아 BST(Binary Search Tree)에 저장해 보려고 한다.
저장이 끝난 다음 잘 저장되었는지 확인하기 위해 BST를 다음 세 가지 방식으로 순회하여 저장된 학생들의 이름을 출력하시오.
- preorder
- inorder
- postorder
만약 실수로 학번이 같은 학생이 입력되면, 그 학생의 데이터는 저장하지 않는다.
입력 설명
학생 수 n이 입력된다.
다음 줄부터 n줄 동안 학번 no와 이름 name이 입력된다.
출력 설명
첫 번째 줄에는 BST를 preorder 방식으로 순회했을 때의 순서대로 학생들의 이름을 출력한다.
두 번째 줄에는 BST를 inorder 방식으로 순회했을 때의 순서대로 학생들의 이름을 출력한다.
세 번째 줄에는 BST를 postorder 방식으로 순회했을 때의 순서대로 학생들의 이름을 출력한다.
제한
- 1 ≤ n ≤ 100
입력 예시
5
10 AAA
13 BBB
5 CCC
7 DDD
1 EEE
출력 예시
AAA CCC EEE DDD BBB
EEE CCC DDD AAA BBB
EEE DDD CCC BBB AAA
front
#include<stdio.h>
#include<stdlib.h>
struct Data { int no; char name[20]; };
struct Tnode { Data d; Tnode *left,*right; };
struct BST {
private:
Tnode *root=NULL;
public:
void setRoot(Tnode * t) { root=t; }
Tnode* getRoot() { return root; }
Tnode* insert(Tnode *t,Data d);
void preorder(Tnode *t);
void inorder(Tnode *t);
void postorder(Tnode *t);
};
rear
int main() {
int n;
Data d;
BST bst;
scanf("%d",&n);
for(int i=0;i<n;i++) {
scanf("%d%s",&d.no, &d.name);
bst.setRoot(bst.insert(bst.getRoot(), d));
}
bst.preorder(bst.getRoot());
printf("\n");
bst.inorder(bst.getRoot());
printf("\n");
bst.postorder(bst.getRoot());
printf("\n");
}
코멘트