[ ๋ฌธ์ ๋งํฌ ]
https://www.acmicpc.net/problem/1991
๐ฉ ์กฐ๊ฑด
- ์ด์ง ํธ๋ฆฌ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์ ์ํ(preorder traversal), ์ค์ ์ํ(inorder traversal), ํ์ ์ํ(postorder traversal)ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ
- ์ฒซ์งธ ์ค์๋ ์ด์ง ํธ๋ฆฌ์ ๋ ธ๋์ ๊ฐ์ N(1 ≤ N ≤ 26)์ด ์ฃผ์ด์ง
- ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ๋ ธ๋์ ๊ทธ์ ์ผ์ชฝ ์์ ๋ ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๊ฐ ์ฃผ์ด์ง
- ๋ ธ๋์ ์ด๋ฆ์ A๋ถํฐ ์ฐจ๋ก๋๋ก ์ํ๋ฒณ ๋๋ฌธ์๋ก ๋งค๊ฒจ์ง๋ฉฐ, ํญ์ A๊ฐ ๋ฃจํธ ๋ ธ๋๊ฐ ๋จ. ์์ ๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ .์ผ๋ก ํํ
๐ฉ ์ ๊ทผ
ํธ๋ฆฌ -> ๊ตฌ์กฐ์ฒด๋ก ๊ตฌํ
์ํ -> ์ฌ๊ทํจ์๋ก ๊ตฌํ
๐ฉ ์ํ์ฐฉ์ค
- ๊ตฌ์กฐ์ฒด ์ ์ธ
struct NODE{
char root;
char left;
char right;
};
- ๊ตฌ์กฐ์ฒด ๋ณ์ ์ ์ธ ํ ์ ๊ทผ
NODE node;
node.root = f;
node.left = s;
node.right = t;
- ์๋์ ๊ฐ์ด ๊ตฌ์กฐ์ฒด ์ด๊ธฐํ๋ ๊ฐ๋ฅ
NODE node = {f, s, t};
๐ป ์ฝ๋ (C++)
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct NODE{
char root;
char left;
char right;
};
NODE nodeArr[26];
void preorder(char root){
cout<<root;
if(nodeArr[root-'0'].left != '.')
preorder(nodeArr[root-'0'].left);
if(nodeArr[root-'0'].right != '.')
preorder(nodeArr[root-'0'].right);
}
void inorder(char root){
if(nodeArr[root-'0'].left != '.')
inorder(nodeArr[root-'0'].left);
cout<<root;
if(nodeArr[root-'0'].right != '.')
inorder(nodeArr[root-'0'].right);
}
void postorder(char root){
if(nodeArr[root-'0'].left != '.')
postorder(nodeArr[root-'0'].left);
if(nodeArr[root-'0'].right != '.')
postorder(nodeArr[root-'0'].right);
cout<<root;
}
int main(){
int N;
cin>>N;
char f, s, t;
for(int i=0;i<N;i++){
cin>>f>>s>>t;
NODE node;
node.root = f;
node.left = s;
node.right = t;
nodeArr[f-'0'] = node;
}
preorder('A');
cout << "\n";
inorder('A');
cout << "\n";
postorder('A');
}
'๐ป Algorithms > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1932 ์ ์ ์ผ๊ฐํ - ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (0) | 2024.08.31 |
---|---|
[๋ฐฑ์ค] 1003 ํผ๋ณด๋์น ํจ์ - ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (0) | 2024.08.31 |
[๋ฐฑ์ค] 11866 ์์ธํธ์ค ๋ฌธ์ 0 - ์ฐ๊ฒฐ ๋ฆฌ์คํธ (0) | 2024.08.27 |
[๋ฐฑ์ค] 1181 ๋จ์ด ์ ๋ ฌ - ์ ๋ ฌ (0) | 2024.08.25 |
[๋ฐฑ์ค] 10814 ๋์ด์ ์ ๋ ฌ - ์ ๋ ฌ (0) | 2024.08.24 |