[λ°±μ€,c++] 5539λ² - μ΄μ§ κ²μ νΈλ¦¬
λ¬Έμ
5639λ²: μ΄μ§ κ²μ νΈλ¦¬
νΈλ¦¬λ₯Ό μ μ μνν κ²°κ³Όκ° μ£Όμ΄μ§λ€. λ Έλμ λ€μ΄μλ ν€μ κ°μ 106λ³΄λ€ μμ μμ μ μμ΄λ€. λͺ¨λ κ°μ ν μ€μ νλμ© μ£Όμ΄μ§λ©°, λ Έλμ μλ 10,000κ° μ΄νμ΄λ€. κ°μ ν€λ₯Ό κ°μ§λ λ Έλλ μλ€
www.acmicpc.net
μ½λ
#include <iostream>
#include <vector>
using namespace std;
vector<int>v;
void postorder(int start, int end){
if(start>end) return;
if(start==end){
cout<<v[start]<<'\n';
return;
}
int root_index = start;
while(true){
root_index++;
if(v[start]<v[root_index]) break;
if(root_index>end) break;
}
postorder(start+1, root_index-1);
postorder(root_index, end);
cout<<v[start]<<'\n'; // 루νΈλ
Έλ μΆλ ₯
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int inp;
while(cin>>inp){
v.push_back(inp);
}
postorder(0, v.size()-1);
}
νμ΄
μ΄μ§νΈλ¦¬λ₯Ό μ μ μνν κ²°κ³Όκ° μ£Όμ΄μ‘μ λ, μ΄ νΈλ¦¬λ₯Ό νμ μνν κ²°κ³Όλ₯Ό μΆλ ₯νλ λ¬Έμ μ λλ€.
νμ΄ μμ΄λμ΄λ λ€μκ³Ό κ°μ΅λλ€. λ¬Έμ μ μμ μ λ ₯κ³Ό κ°μ λ€μ μ λ ₯ μμ λ, κ°κ° Root, Left, Rightλ λ€μκ³Ό κ°μ΅λλ€.
50 30 24 5 28 45 98 52 60
λΉ¨κ°μ: Root, νλμ: Left, μ΄λ‘μ: Right
κ·Έ μ΄μ λ μΌλ¨ Root λ Έλλ 50μΌ μ΄κ³ , 30λΆν° Left λ ΈλμΈλ° Rootλ³΄λ€ μ²μμΌλ‘ ν° κ°μ΄ λμ€λ©΄ ν΄λΉ Nodeλ Right λ Έλμ μμμ μ΄ λ©λλ€.
λ°λΌμ ν΄λΉ μμ΄λμ΄ λ°©μμΌλ‘ 루νΈλ₯Ό κΈ°μ μΌλ‘ μ’μ° μμͺ½μΌλ‘ λΆν νμ¬ λλ€μ μ²μκ³Ό κ°μ λ°©λ²μ λ°λ³΅νκ² λλ©΄ 리ν λ Έλμ λλ¬νκ² λλλ° κ·Έλ 리ν λ Έλλ₯Ό μΆλ ₯νλ λ°©μμΌλ‘ ꡬννλ©΄ ν΄κ²°ν μ μμ΅λλ€.