문제
코드
Binary Search Tree를 직접 구현하여 풀었다.
#include <iostream>
using namespace std;
class Node{
public:
int value;
Node *right;
Node *left;
Node(){value = 0; right = NULL; left = NULL;}
Node(int data){value = data;right = NULL; left = NULL;}
void setRight(Node *node){this->right = node;}
void setLeft(Node *node){this->left = node;}
};
class Tree{
public:
Node *rootNode;
Tree(){rootNode = NULL;}
void insert(int data);
void display();
void display(Node *node);
};
void Tree::insert(int data){
Node *node = new Node(data);
if (rootNode == NULL) {rootNode = node;return;}
Node *cursor = rootNode;
while(1){
int value = cursor -> value;
if(value < data){
if (cursor->right == NULL){
cursor->setRight(node);
break;
}else
cursor = cursor->right;
}else{
if(cursor->left == NULL){
cursor->setLeft(node);
break;
}else
cursor = cursor->left;
}
}
return;
}
void Tree::display(){
Node *cursor = rootNode;
display(cursor);
}
void Tree::display(Node *cursor){
if(cursor->left != NULL)
display(cursor->left);
if(cursor->right != NULL)
display(cursor->right);
cout << cursor->value<<endl;
}
int main() {
Tree tree = Tree();
int temp;
while(cin >> temp) {
if(temp == EOF)break;
tree.insert(temp);
}
tree.display();
}
반응형
'알고리즘 문제 > C++' 카테고리의 다른 글
[프로그래머스] Level2 : 더 맵게 - C++ (0) | 2021.01.17 |
---|---|
[백준] 9934번 : 완전 이진 트리 - C++ (0) | 2021.01.06 |
[프로그래머스] Level2 : 주식가격 - C++ (0) | 2020.12.27 |
[프로그래머스] Level2 : 다리를 지나는 트럭 - C++ (2) | 2020.12.20 |
[프로그래머스] Level2 : 기능개발 - C++ (0) | 2020.12.19 |