본문 바로가기

Algorithm

1231. [S/W 문제해결 기본] 9일차 - 중위순회

반응형

 

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV140YnqAIECFAYD&categoryId=AV140YnqAIECFAYD&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

트리 탐색이 어떻게 동작하는지 그대로 구현하면 되는 문제.

 

 


#include<iostream>
#include<string.h>
using namespace std;

struct Node {

	char c;
	int left;
	int right;

};

string str;

Node arr[101];
int parent[101];
bool visit[101];

void DFS(int cur)
{
	if (cur == 0)
	{
		return;
	}
	if (arr[cur].left != -1 && !visit[arr[cur].left])
	{
		DFS(arr[cur].left);
	}
	else
	{
		if (!visit[cur])
		{
			visit[cur] = true;
			str += arr[cur].c;
		}

		if (arr[cur].right != -1 && !visit[arr[cur].right])
		{
			DFS(arr[cur].right);
		}
		else
		{
			DFS(parent[cur]);
		}
	}


}


int main(int argc, char** argv)
{
	int test_case;

	
	for (test_case = 1; test_case <= 10; ++test_case)
	{
		int N;
		str.clear();
		memset(visit, 0, sizeof(visit));
		cin >> N;
		for (int i = 0; i < N; i++)
		{
			int idx;
			cin >> idx;
			char c;
			cin >> c;

			int a = -1;
			int b = -1;

			if (idx * 2 < N)
			{
				cin >> a >> b;
				parent[a] = idx;
				parent[b] = idx;
			}
			else if (idx * 2 == N)
			{
				cin >> a;

				parent[a] = idx;
			}

			arr[idx] = {c, a,b };
		}
		DFS(1);
		cout <<"#" << test_case<<" " << str << endl;
		
	}
	return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
반응형

'Algorithm' 카테고리의 다른 글

1238. [S/W 문제해결 기본] 10일차 - Contact  (0) 2020.04.20
1861. 정사각형 방  (0) 2020.04.19
백준 2048 (Easy) 재풀이  (0) 2020.04.18
1808. 지희의 고장난 계산기  (0) 2020.04.17
백준 주사위 윷놀이 재도전  (0) 2020.04.15