반응형
SMALL
이 문제는 swexpertacademy P.1231 문제임을 알립니다.
또한 패스트 캠퍼스 수강자이며 안경잡이개발자 나동빈님의 강의를 보고 활용하여 푼 것이므로
안경잡이 개발자 님의 블로그를 링크 할테니 많이 가서 좋은 배움 얻으시길 바랍니다.
중위 순회 알고리즘을 가져와 풀었는데 문제를 보면 주어진 node의 갯수에 따라 몇번 째 번호에 이를 시 입력을 각각 다르게 받으며
node의 갯수가 짝수인지 홀수인지 또한 구분하여야 합니다.
이는 input.txt를 보게 되면 판별할 수 있습니다.
#include<iostream>
using namespace std;
int number;
typedef struct node *treePointer;
typedef struct node {
char data;
treePointer leftChild, rightChild;
} node;
void inorder(treePointer ptr){
if(ptr){
inorder(ptr->leftChild);
cout<<ptr->data;
inorder(ptr->rightChild);
}
}
int main(void){
for(int t=1; t<=10; t++){
cout<<"#"<<t<<' ';
cin>>number;
node nodes[number+1];
int N;
char C;
for(int i=1; i<=number; i++){
if(number%2==0){
if(i<number/2){
cin>>N>>C>>N>>N;
nodes[i].data = C;
nodes[i].leftChild = NULL;
nodes[i].rightChild = NULL;
}
else if (i==number/2){
cin>>N>>C>>N;
nodes[i].data = C;
nodes[i].leftChild = NULL;
nodes[i].rightChild = NULL;
}
else {
cin>>N>>C;
nodes[i].data = C;
nodes[i].leftChild = NULL;
nodes[i].rightChild = NULL;
}
}
else{
if(i<=number/2){
cin>>N>>C>>N>>N;
nodes[i].data = C;
nodes[i].leftChild = NULL;
nodes[i].rightChild = NULL;
}
else {
cin>>N>>C;
nodes[i].data = C;
nodes[i].leftChild = NULL;
nodes[i].rightChild = NULL;
}
}
}
for(int i=1; i<=number; i++){
if(i%2==0)
nodes[i/2].leftChild = &nodes[i];
else
nodes[i/2].rightChild = &nodes[i];
}
inorder(&nodes[1]);
cout<<'\n';
}
return 0;
}
반응형
LIST
'코딩스터디' 카테고리의 다른 글
서버와 클라이언트 만들기 (0) | 2019.06.02 |
---|---|
핵맨 게임 C++로 만들기 (0) | 2019.05.18 |
1226. [S/W 문제해결 기본] 7일차 - 미로1 (0) | 2019.05.13 |
6808. 규영이와 인영이의 카드게임 (0) | 2019.05.13 |
1206. [S/W 문제해결 기본] 1일차 - View (0) | 2019.05.13 |