알고리즘 모음(C++)

백준 5639 - 이진 검색 트리(C++) 본문

백준

백준 5639 - 이진 검색 트리(C++)

공대생의 잡다한 사전 2022. 3. 11. 01:24

문제 링크입니다. https://www.acmicpc.net/problem/5639

 

5639번: 이진 검색 트리

트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다

www.acmicpc.net

트리 문제였습니다. 재귀를 통해서 전위 탐색을 후위 탐색으로 출력하면 됩니다.

 

 

자세한 것은 코드를 참고해주세요

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
#include <stack>
#include <cmath>
#define INF 987654321

using namespace std;

int Tree[10001];
int num = 0;

void post_order(int start, int end) {
	if (start >= end) return;
	if (start == end - 1) {
		cout << Tree[start] << "\n";
		return;
	}
	int idx = start + 1;
	while (idx < end) {
		if (Tree[start] < Tree[idx]) break;
		idx++;
	}
	post_order(start + 1, idx);
	post_order(idx, end);
	cout << Tree[start] << "\n";
}

void solve() {
	post_order(0, num);
}

int main()
{
	cin.tie(0);
	cout.tie(0);
	int x;
	while (cin >> x) {
		Tree[num++] = x;
	}
	solve();
	return 0;
}

 

질문 및 조언 댓글 남겨주세요