γλͺ©μ°¨γ
0. κ°μ
1. λ¬Έμ
2. νμ΄
3. μ½λ
0. κ°μ
νΈλ¦¬, μ¬κ· λ¬Έμ . νΈλ¦¬λ₯Ό μννλ κ°μ₯ κΈ°λ³Έμ μΈ λ°©λ²μΈ 'μ μ μν', 'μ€μ μν', 'νμ μν'μ λν΄ μκ³ μλ€λ©΄ μ½κ² ν μ μλ λ¬Έμ μ΄λ€.
1. λ¬Έμ
https://www.acmicpc.net/problem/1991
[λ¬Έμ ]
μ΄μ§ νΈλ¦¬λ₯Ό μ λ ₯λ°μ μ μ μν(preorder traversal), μ€μ μν(inorder traversal), νμ μν(postorder traversal)ν κ²°κ³Όλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μλ₯Ό λ€μ΄ μμ κ°μ μ΄μ§ νΈλ¦¬κ° μ λ ₯λλ©΄,
- μ μ μνν κ²°κ³Ό : ABDCEFG // (루νΈ) (μΌμͺ½ μμ) (μ€λ₯Έμͺ½ μμ)
- μ€μ μνν κ²°κ³Ό : DBAECFG // (μΌμͺ½ μμ) (루νΈ) (μ€λ₯Έμͺ½ μμ)
- νμ μνν κ²°κ³Ό : DBEGFCA // (μΌμͺ½ μμ) (μ€λ₯Έμͺ½ μμ) (루νΈ)
κ° λλ€.
[μ λ ₯]
첫째 μ€μλ μ΄μ§ νΈλ¦¬μ λ Έλμ κ°μ N(1 ≤ N ≤ 26)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μ κ±Έμ³ κ° λ Έλμ κ·Έμ μΌμͺ½ μμ λ Έλ, μ€λ₯Έμͺ½ μμ λ Έλκ° μ£Όμ΄μ§λ€. λ Έλμ μ΄λ¦μ AλΆν° μ°¨λ‘λλ‘ μνλ²³ λλ¬Έμλ‘ λ§€κ²¨μ§λ©°, νμ Aκ° λ£¨νΈ λ Έλκ° λλ€. μμ λ Έλκ° μλ κ²½μ°μλ .μΌλ‘ νννλ€.
[μΆλ ₯]
첫째 μ€μ μ μ μν, λμ§Έ μ€μ μ€μ μν, μ μ§Έ μ€μ νμ μνν κ²°κ³Όλ₯Ό μΆλ ₯νλ€. κ° μ€μ Nκ°μ μνλ²³μ 곡백 μμ΄ μΆλ ₯νλ©΄ λλ€.
[μμ μ λ ₯ 1]
7
A B C
B D .
C E F
E . .
F . G
D . .
G . .
[μμ μΆλ ₯ 1]
ABDCEFG
DBAECFG
DBEGFCA
2. νμ΄
μ μ μν, μ€μ μν, νμ μνλ 무μμΌκΉ?
* νΈλ¦¬ μνλ νΉμ λͺ©μ μ μν΄ νΈλ¦¬μ λͺ¨λ λ Έλλ₯Ό ν λ²μ© λ°©λ¬Ένλ κ²μ λ§νλ€.
* νΈλ¦¬ ꡬ쑰λ κ³μΈ΅μ ꡬ쑰λΌλ νΉλ³ν νΉμ§μ κ°μ§κΈ° λλ¬Έμ, λͺ¨λ λ Έλλ₯Ό μννλ λ°©λ²μ ν¬κ² μΈκ°μ§κ° μλ€.
* μμ μΈκ°μ§ λ°©λ²μ΄ λ°λ‘ μ μ μν, μ€μ μν, νμ μν μ΄λ€. (μν μμλ μλ κ·Έλ¦Όκ³Ό κ°λ€.)
ν΅μ¬ μ½λλ§ μ΄ν΄λ³΄μ.
tree λ°°μ΄μ 0λ²μ§Έ index μλ A λ Έλμ μ λ³΄κ° μ μ₯λκ³ , 1λ²μ§Έ idxμλ B λ Έλ, 2λ²μ§Έ idxμλ C λ Έλ, ..., 25λ²μ§Έ idxμλ Z λ Έλκ° μ μ₯λλ€.
μ¬κΈ°μ, tree[root - 'A'] λΌλ λ°©μμΌλ‘ root κ°μ ν΄λΉνλ λ Έλλ₯Ό λ°°μ΄μ μμ°¨μ μΌλ‘ μ μ₯ν μ μκ² λλ€.
3. μ½λ
#include <iostream>
using namespace std;
/* Struct */
struct node {
char left;
char right;
};
/* Global */
node tree[26]; // A(0)~Z(26) κΉμ§ μ μ₯.
/* Function */
void preorder(char root) { //μ μμν
if (root != '.') {
cout << root;
preorder(tree[root - 'A'].left);
preorder(tree[root - 'A'].right);
}
}
void inorder(char root) { //μ€μμν
if (root != '.') {
inorder(tree[root - 'A'].left);
cout << root;
inorder(tree[root - 'A'].right);
}
}
void postorder(char root) { //νμμν
if (root != '.') {
postorder(tree[root - 'A'].left);
postorder(tree[root - 'A'].right);
cout << root;
}
}
/* Main */
int main(int argc, char* argv[]) {
/* Faster */
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
/* Input & Init */
int n; cin >> n;
for (int i = 0; i < n; i++) {
/* Input */
char root, left, right;
cin >> root >> left >> right;
/* Tree */
tree[root - 'A'].left = left;
tree[root - 'A'].right = right;
}
/* Output */
preorder('A');
cout << '\n';
inorder('A');
cout << '\n';
postorder('A');
cout << '\n';
/* Return */
return 0;
}
'γβ¨οΈα΄sγPS > λ°±μ€_μλ£κ΅¬μ‘°[DS]' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Baekjoon/λ°±μ€][1966][C/C++] νλ¦°ν° ν (0) | 2023.05.03 |
---|---|
[Baekjoon/λ°±μ€][2164][C/C++] μΉ΄λ2 (0) | 2023.05.03 |
[Baekjoon/λ°±μ€][18258][C/C++] ν 2 (0) | 2023.05.03 |
[Baekjoon/λ°±μ€][10845][C/C++] ν (0) | 2023.05.03 |
[Baekjoon/λ°±μ€][1406][C/C++] μλν° (0) | 2023.05.03 |