본문 바로가기

온라인 코딩/탐색(Search)

[구름IDE] PostOrder Traversal (★4)

 

 

 

 

 

문제

 

 

 

 

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
using namespace std;
 
constexpr int NON_DATA = -1;
 
struct Node {
private:
public:
    Node* left;
    Node* right;
    int data;
    Node(int new_data) :data(new_data), left(nullptr), right(nullptr) {}
    Node() :data(NON_DATA), left(nullptr), right(nullptr) {}
 
};
 
class Tree {
private:
public:
    Node* root;
    Tree() {
        root = nullptr;
    };
    void InsertNode(int data) {
        Node* newNode = new Node(data);
        Node* curr = root;
        while (true) {
 
            if (root == nullptr) {
                root = newNode;
                break;
            }
 
            if (curr->data > data) {
                if (curr->left == nullptr) {
                    curr->left = newNode;
                    break;
                }
                else {
                    curr = curr->left;
                    continue;
                }
            }
 
            else if (curr->data < data) {
                if (curr->right == nullptr) {
                    curr->right = newNode;
                    break;
                }
                else {
                    curr = curr->right;
                    continue;
                }
            }
        }
    }
};
void PostOrder(Node* node) {
    if (node == nullptr)
        return;
    PostOrder(node->left);
    PostOrder(node->right);
    std::cout << node->data << " ";
}
 
int main() {
    Tree tree;
    tree.InsertNode(6);
    tree.InsertNode(3);
    tree.InsertNode(9);
    tree.InsertNode(1);
    tree.InsertNode(5);
    tree.InsertNode(7);
    tree.InsertNode(11);
    PostOrder(tree.root);
    return 0;
}
 
 
 

 

 

후기

이 문제를 해결하기 위한 키워드는 트리 순회이다. 

자세한 설명은 아래 관련 글에 작성을 하였다.

 

이 문제와 글은 순수 아이패드를 사용해서 작성 및 풀이를 진행하였다.

처음으로 아이패드와 웹 IDE를 사용해서 풀어본 장단점은 다음과 같다.

 

장점

1. 어디서든 코딩을 할 수 있다.

   일단 휴대성은 PC와 비교했을 때는 정말 좋다. 어디서든 할 수 있다는 건 정말 큰 장점이다.

 

단점

1. 웹IDE의 한계점

   지금까지 코딩 문제를 푼 거는 비주얼 스튜디오에서 작성을 하고 검사를 진행 할 때만 웹 IDE를 사용했었다. 그러다 보니 한계점이 보였는데 바로 인텔리 센스이다. 이 기능은 프로그래머가 잘 못쓴 코드나 혹은 바로 변수 함수를 찾을 수 있게 도와주는 기능 인대 이 기능이 없다 보니 생각보다 불편하였다. 또 오류 표시가 생각보다 불친절해서 메모리를 건드는 포인터 같은 작업을 해야 한다면  비주얼 스튜디오를 사용하는 게 좋다고 생각한다.

 

2. 아이패드 IOS의 단점

  코드를 작성할 때 까지는 컨 c, 컨 v, 컨 a, 대문자 변경 등이 안돼서 일일이 코드를 작성했다. 이후에 글을 작성할 때에는 친구가 알려줘서 해결할 수 있었다.  키보드가 애플에서 파는 키보드가 아닌 타사 제품을 사용해서 그런지 모르겠지만 생각보다 불편하다. 단순히 코드를 보는 용도로는 최고지만 집에 PC가 있지만 글쓴이처럼 애플 갬성으로 고생해서 코드를 짜는 짓은 정신건강에 나쁘다고 생각한다.(그리고 가끔씩 쓴 글이 사라진다...)

 

 

 

출처 및 레퍼런스

문제 링크: https://level.goorm.io/exam/43133/postorder-traversal/quiz/1

관련 글

[자료구조 알고리즘/그래프(Graph)와 트리(Tree)] - 이진 검색트리(Binary Search Tree)

[온라인 코딩/탐색(Search)] - [백준] 1991번 트리 순회

[온라인 코딩/탐색(Search)] - [백준] 1717번 집합의 표현

[자료구조 알고리즘/이론] - Tree 이론