관리 메뉴

fatalite

트리 순회 - 백준 1991 본문

코딩 인터뷰/C++

트리 순회 - 백준 1991

fataliteforu 2023. 4. 8. 10:27

Problem

티어 : 실버 1 

유형 : 트리, 탐색

체감 난이도 : 쉬움

접근 : Node 구조체 및 재귀 탐색

Solution

#include <iostream>
#include <vector>
using namespace std;
struct node {
	char name;
	node* left = nullptr;
	node* right = nullptr;
};

void inorder(node u) {
	if (u.left != nullptr) {
		inorder(*u.left);
	}
	
	cout << u.name;
	if (u.right != nullptr) {
		inorder(*u.right);
	}
}

void preorder(node u) {
	cout << u.name;
	if (u.left != nullptr) {
		preorder(*u.left);
	}
	if (u.right != nullptr) {
		preorder(*u.right);
	}
}

void postorder(node u) {
	
	if (u.left != nullptr) {
		postorder(*u.left);
	}
	if (u.right != nullptr) {
		postorder(*u.right);
	}
	cout << u.name;
}
int n;
int main() {
	cin >> n;
	vector<node> tree(n, node());
	for (int i = 0; i <n; i++) {
		char a, b, c;
		cin >> a >> b >> c;
		//cout << int(a);
		tree[int(a) - 65].name = a;
		if (b != '.') {
			tree[int(a) -65].left = &tree[int(b) - 65];
		}
		if (c != '.') {
			tree[int(a) - 65].right = &tree[int(c) - 65];
		}

	}
	preorder(tree[0]);
	cout << "\n";
	inorder(tree[0]);
	cout << "\n";
	postorder(tree[0]);
}

'코딩 인터뷰 > C++' 카테고리의 다른 글

☆ 용액 - 백준 2467  (0) 2023.04.11
☆ 스티커 - 백준 9465  (1) 2023.04.09
정수삼각형 - 백준 1932  (0) 2023.04.04
N과 M(1) - 백준 15649  (0) 2023.02.27
N과 M(6) - 백준 15655  (0) 2023.02.26