ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ์ด์งํธ๋ฆฌ๋ฅผ ์ ์์ํ, ์ค์์ํ, ํ์์ํ๋ฅผ ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ์ธ์.
๊ฐ๋
ํธ๋ฆฌ(Tree)
- ๋ ธ๋(node)๋ก ์ด๋ฃจ์ด์ง ๋น์ ํ ์๋ฃ ๊ตฌ์กฐ
- ํธ๋ฆฌ๋ ํ๋์ ๋ฃจํธ(root) ๋ ธ๋๋ฅผ ๊ฐ๊ณ ์์
- ๋ฃจํธ ๋ ธ๋๋ 0๊ฐ ์ด์์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๊ณ ์์
- ๊ทธ ์์ ๋ํ 0๊ฐ ์ด์์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๊ณ ์๊ณ , ์ด๋ ๋ฐ๋ณต์ ์ผ๋ก ์ ์
- ๋ ธ๋์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ (edge)๋ค๋ก ๊ตฌ์ฑ
- ๋ฃจํธ ๋ ธ๋(root node): ๋ถ๋ชจ๊ฐ ์๋ ๋ ธ๋, ํธ๋ฆฌ๋ ํ๋์ ๋ฃจํธ ๋ ธ๋๋ง์ ๊ฐ์ง
- ๋จ๋ง ๋ ธ๋(leaf node): ์์์ด ์๋ ๋ ธ๋, '๋ง๋จ ๋ ธ๋' ๋๋ '์ ๋ ธ๋' ๋ผ๊ณ ๋ ๋ถ๋ฆผ
- ๋ด๋ถ ๋ ธ๋(internal node): ๋จ๋ง ๋ ธ๋๊ฐ ์๋ ๋ ธ๋
- ๊ฐ์ (edge): ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ์ (link, branch ๋ผ๊ณ ๋ ๋ถ๋ฆ)
- ํ์ (sibling): ๊ฐ์ ๋ถ๋ชจ๋ฅผ ๊ฐ์ง๋ ๋ ธ๋
- ๋ ธ๋์ ํฌ๊ธฐ(size): ์์ ์ ํฌํจํ ๋ชจ๋ ์์ ๋ ธ๋์ ๊ฐ์
- ๋ ธ๋์ ๊น์ด(depth): ๋ฃจํธ์์ ์ด๋ค ๋ ธ๋์ ๋๋ฌํ๊ธฐ ์ํด ๊ฑฐ์ณ์ผ ํ๋ ๊ฐ์ ์ ์
- ๋ ธ๋์ ๋ ๋ฒจ(level): ํธ๋ฆฌ์ ํน์ ๊น์ด๋ฅผ ๊ฐ์ง๋ ๋ ธ๋์ ์งํฉ
- ๋ ธ๋์ ์ฐจ์(degree): ํ์ ํธ๋ฆฌ ๊ฐ์ / ๊ฐ์ ์: ๊ฐ ๋ ธ๋๊ฐ ์ง๋ ๊ฐ์ง์ ๊ฐ์
- ํธ๋ฆฌ์ ์ฐจ์(degree of tree): ํธ๋ฆฌ์ ์ต๋ ์ฐจ์
- ํธ๋ฆฌ์ ๋์ด(height): ๋ฃจํธ ๋ ธ๋์์ ๊ฐ์ฅ ๊น์ํ ์๋ ๋ ธ๋์ ๊น์ด
์ด์ง ํธ๋ฆฌ(Binary Tree)
- ๊ฐ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์์ ๊ฐ๋ ํธ๋ฆฌ
- ๋ชจ๋ ํธ๋ฆฌ๊ฐ ์ด์ง ํธ๋ฆฌ๋ ์๋
์ด์ง ํธ๋ฆฌ ์ํ
- ์ ์ ์ํ(pre-order-traversal): ํ์ฌ ๋ ธ๋ => ์ผ์ชฝ ๋ ธ๋ => ์ค๋ฅธ์ชฝ ๋ ธ๋
- ์ค์ ์ํ(in-order-traversal): ์ผ์ชฝ ๋ ธ๋ => ํ์ฌ ๋ ธ๋ => ์ค๋ฅธ์ชฝ ๋ ธ๋
- ํ์ ์ํ(post-order-traversal): ์ผ์ชฝ ๋ ธ๋ => ์ค๋ฅธ์ชฝ ๋ ธ๋ => ํ์ฌ ๋ ธ๋
์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)
- ๋ชจ๋ ์ผ์ชฝ ์์๋ค <= N <= ๋ชจ๋ ์ค๋ฅธ์ชฝ ์์๋ค
์์ ์ด์ง ํธ๋ฆฌ(Complete Binary Tree)
- ํธ๋ฆฌ์ ๋ชจ๋ ๋์ด์์ ๋ ธ๋๊ฐ ๊ฝ ์ฐจ ์๋ ํธ๋ฆฌ
- ๋ง์ง๋ง ๋ ๋ฒจ์ ๊ฝ ์ฐจ ์์ง ์์๋ ๋์ง๋ง ๋ ธ๋๊ฐ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฑ์์ ธ์ผ ํจ
๋ฌธ์ ํ์ด
- ํ์ฌ ํธ๋ฆฌ๋ ๋ถ๋ชจ ๋ ธ๋(x) ๊ธฐ์ค ์ผ์ชฝ ๋ ธ๋์ ๊ฐ์ x*2 ์ค๋ฅธ์ชฝ ๋ ธ๋์ ๊ฐ์ด x*2+1 ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ํด๋น ๋ฌธ์ ์์๋ ๋ณ๋๋ก ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๊ฐ ํ์ํ ๊ฒ์ด ์๋ ์์๋๋ง์ ์ฐ์ถํด๋ด๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ท ํจ์์ ์คํ ํ๋ ์์ ์ฌ์ฉํ๋ค.
- ์๋ ๊ทธ๋ฆผ์ ํธ์ถ ์์๋ฅผ ์ค์ ์ผ๋ก ์ค๊ฐ ์ฐ์ฐ์๋ฅผ ์ด๋์ ๋ฐฐ์นํ๋์ ๋ฐ๋ผ ์ํ๋ฅผ ๋ฌ๋ฆฌ ์ฐ์ถํ๋ค.
์ฝ๋
function solution(n){
let answer="";
function DFS(v){
if(v>7) return;
else{
DFS(v*2);
answer+=(v+' ');
DFS(v*2+1);
}
}
DFS(n);
return answer;
}
console.log(solution(1));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DFS]ํฉ์ด ๊ฐ์ ๋ถ๋ถ์งํฉ (0) | 2021.07.30 |
---|---|
[DFS]๋ถ๋ถ์งํฉ ๊ตฌํ๊ธฐ (0) | 2021.07.30 |
[์ฌ๊ทํจ์์ ์คํ ํ๋ ์]์ด์ง์ ์ถ๋ ฅ (0) | 2021.07.27 |
[๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ]๋ฎค์ง๋น๋์ค (0) | 2021.07.25 |
์ด๋ถํ์ (0) | 2021.07.25 |
๋๊ธ