https://www.acmicpc.net/problem/5639
이진 검색트리 문제이다. 간단하게 리뷰를 해보자면,
전위 순회(루트→왼쪽→오른쪽) : 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;
}
댓글