๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 9934๋ฒˆ - ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

by ์•ˆ์ฃผํ˜• 2022. 6. 21.

๋ฌธ์ œ

 

9934๋ฒˆ: ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

์ƒ๊ทผ์ด๋Š” ์Šฌ๋กœ๋ฒ ๋‹ˆ์•„์˜ ๋„์‹œ Donji Andrijevci๋ฅผ ์—ฌํ–‰ํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๋„์‹œ์˜ ๋„๋กœ๋Š” ๊นŠ์ด๊ฐ€ K์ธ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค. ๊นŠ์ด๊ฐ€ K์ธ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋Š” ์ด 2K-1๊ฐœ์˜ ๋…ธ๋“œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. (์•„๋ž˜

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

vector<int>height[1025];
vector<int>v(1025);
void inorder(int start, int end, int level){
    if(start > end) return;
    int mid = (start+end)/2;
    height[level].push_back(v[mid]);
    
    inorder(start, mid-1, level+1);
    inorder(mid+1, end, level+1);

}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int K; cin>>K;
    
    for(int i=0; i<pow(2,K)-1; i++){
        cin>>v[i];
    }
    
    inorder(0, pow(2,K)-2, 1);
    
    for(int i=1; i<=K; i++){
        for(auto it: height[i]){
            cout<<it<<' ';
        }
        cout<<'\n';
    }
}

 

ํ’€์ด

์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์ค‘์œ„ ์ˆœํšŒ(inorder) ๋ฐฉ์‹์œผ๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ ๋ ˆ๋ฒจ ๋ณ„ ๋…ธ๋“œ๋ฅผ ์ „๋ถ€ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ค‘์œ„ ์ˆœํšŒ์˜ ๊ฐœ๋…์€ ์•„๋ž˜ ๊ฒŒ์‹œ๊ธ€์—์„œ ์ •๋ฆฌํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด์ง„ํŠธ๋ฆฌ ํƒ์ƒ‰ ์šดํ–‰๋ฒ•

์ด์ง„ํŠธ๋ฆฌ(Binary Tree) ๋ถ€๋ชจ์™€ ์ž์‹์œผ๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋Š” ํŠธ๋ฆฌ ๊ทธ๋ž˜ํ”„ ๋…ธ๋“œ์˜ ์ตœ๋Œ€ ์ฐจ์ˆ˜๊ฐ€ 2์ด๋ฉฐ, ๊ฐ๊ฐ ์™ผ์ชฝ ์ž์‹(left child), ์™€ ์˜ค๋ฅธ์ชฝ ์ž์‹(right child)์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ด์ง„ํŠธ๋ฆฌ์˜ ์ˆœํšŒ ์ด์ง„ํŠธ๋ฆฌ์˜ ์ˆœํšŒ์—

dkswnkk.tistory.com

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•„์ด๋””์–ด๋Š” ๋ฃจํŠธ ๋…ธ๋“œ(mid)๋ฅผ ์ฐพ์€ ๋‹ค์Œ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ ์œผ๋กœ ๋‹ค์‹œ ์ขŒ์šฐ๋กœ ๋ฃจํŠธ ๋…ธํŠธ(mid)๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ฃจํŠธ ๋…ธ๋“œ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ค‘๊ฐ„๊ฐ’์ด ๋ฃจํŠธ๊ฐ’์ด ๋œ๋‹ค.
  2. ๋ฃจํŠธ๋ฅผ ๊ตฌํ•œ ํ›„์—๋Š”  [์ฒ˜์Œ~์ค‘๊ฐ„-1], [์ค‘๊ฐ„+1~๋]์œผ๋กœ ๋ฒ”์œ„๋ฅผ ๋‚˜๋ˆ„๊ณ  ๊ฐ๊ฐ์˜ ๋ฒ”์œ„์—์„œ ๋‹ค์‹œ ์ค‘๊ฐ„๊ฐ’์„ ์ฐพ๋Š”๋‹ค. 

๋Œ“๊ธ€