본문 바로가기
카테고리 없음

[백준] 5638번 : 이진 검색 트리 (C++)

by 루시킴 2021. 9. 1.

https://www.acmicpc.net/problem/5639

 

5639번: 이진 검색 트리

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

www.acmicpc.net

이진 검색트리 문제이다. 간단하게 리뷰를 해보자면,

전위 순회(루트→왼쪽→오른쪽) : 50 30 24 5 28 45 98 52 60

후위 순회(왼쪽→오른쪽→루트) : 5 28 24 45 30 60 52 98 50

중위 순회(왼쪽→루트→오른쪽) : 5 24 28 30 45 50 52 60 98 

 

코드는 정형화된 형식이니 기억하자!

#include <iostream>
using namespace std;

struct Node {
	int data;
	Node* left;
	Node* right;
};

Node* insert(Node* node, int data) {
	if(node == NULL) {
		node = new Node;
		node->data = data;
		node->left = node->right = NULL;
	}
	else if (data < node->data) {
		node->left = insert(node->left, data);
	}
	else {
		node->right = insert(node->right, data);
	}
	return node;
}

void postOrder(Node* node) {
	if (node->left != NULL) {
		postOrder(node->left);
	}
	if (node->right != NULL) {
		postOrder(node->right);
	}
	cout << node->data << endl;
}

int main() {
	Node* root = NULL;
	int n;
	while (cin >> n) {
		root = insert(root, n);
	}
	postOrder(root);
	return 0;
}

 

댓글