Algorithm/C++
[백준 BoJ] 5639 - 이진 검색 트리
cgy12306
2021. 8. 6. 15:29
// https://www.acmicpc.net/problem/5639
// 이진 검색 트리
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct TreeNode {
int key;
struct TreeNode *left, *right;
}TreeNode;
TreeNode *insert(TreeNode *node, int key) {
if (node == NULL) {
node = (TreeNode *)malloc(sizeof(TreeNode));
node->key = key;
node->left = NULL;
node->right = NULL;
}
else if (node->key > key) {
node->left = insert(node->left, key);
}
else if(node->key < key) {
node->right = insert(node->right, key);
}
return node;
}
void postorder(TreeNode *root) {
if (root->left != NULL) postorder(root->left);
if (root->right != NULL) postorder(root->right);
cout << root->key << "\n";
}
void freedom(TreeNode *root) {
if (root != NULL) {
freedom(root->left);
freedom(root->right);
free(root);
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int n;
TreeNode *root;
root = NULL;
while (cin >> n) {
root = insert(root, n);
}
postorder(root);
freedom(root);
}