๐ 03 - ์ด์งํธ๋ฆฌ ์ํ(๊น์ด์ฐ์ ํ์)
์ด์งํธ๋ฆฌ ์ํ๋ฅผ ์ฐ์ตํด๋ณด๋ ๋ฌธ์ ์ด๋ค. ์ฒ์ ๋์จ ๊ฐ๋
์ด๊ธฐ์ ๋จผ์ ๊ฐ๋
์ ๋ฆฌ๋ฅผ ํ ํ์๊ฐ ์๋ค.
์ด์งํธ๋ฆฌ์ ๋ํด์ ๋จผ์ ์์๋ณด์โ
๋๋ฌด๋ฅผ ๋ค์ง์ด ๋์ ๋ชจ์๊ณผ ๊ฐ์ผ๋ฉฐ ๊ฐ๊ฐ์ ๋
ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์ ๋
ธ๋๋ฅผ ๊ฐ์ง๋ ํธ๋ฆฌ ์๋ฃ ๊ตฌ์กฐ๋ก, ์์ ๋
ธ๋๋ฅผ ๊ฐ๊ฐ ์ผ์ชฝ ์์ ๋
ธ๋์ ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋๋ผ๊ณ ํ๋ค. ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
![](https://blog.kakaocdn.net/dn/RalvB/btrOUNk9x7Y/3iKyZwySfxASQALNNRycsK/img.png)
์ด์งํธ๋ฆฌ๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์๋ ์ ์์ํ(preorder), ์ค์์ํ(inorder), ํ์์ํ(postorder)์ 3๊ฐ์ง๊ฐ ์๋๋ฐ, ์ด๋ ๋ถ๋ชจ ๋
ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๊ณ ์๋ค.
![](https://blog.kakaocdn.net/dn/bdXWos/btrOX3176DO/ShNnVbZdjmGY2gJ6lAmwj1/img.png)
์ ์์ํ(preorder)๋ ๋ถ๋ชจ ๋
ธ๋, ์ผ์ชฝ ์์ ๋
ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋ ์์๋ก ํ์ํ๋ค. ์ ์ฌ์ง์ ์ํ ๊ฒฐ๊ณผ๋ 1 2 4 5 3 6 7์ด๋ค.
์ค์์ํ(inorder)๋ ์ผ์ชฝ ์์ ๋
ธ๋, ๋ถ๋ชจ ๋
ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋ ์์๋ก ํ์ํ๋ค. ์ ์ฌ์ง์ ์ํ ๊ฒฐ๊ณผ๋ 4 2 5 1 6 3 7์ด๋ค.
ํ์์ํ(postorder)๋ ์ผ์ชฝ ์์ ๋
ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋, ๋ถ๋ชจ ๋
ธ๋ ์์๋ก ํ์ํ๋ค. ์ ์ฌ์ง์ ์ํ ๊ฒฐ๊ณผ๋ 4 5 2 6 7 3 1์ด๋ค.
๐ ์ฐธ๊ณ ) ์ด์งํธ๋ฆฌ๋ฅผ ๋ฐฐ์ด๋ก ๊ตฌํํ์ง ์๊ณ DFS๋ก ๊ตฌํํ๋ ์ด์ ๋ ๋
ธ๋์ ์์น๋ฅผ ์ฝ๊ฒ ์ ๊ทผ(indexing)ํ ์ ์์ผ๋ ์ฌ์ฉํ์ง ์๋ ๊ณต๊ฐ์ด ์กด์ฌํ ๊ฒฝ์ฐ ๊ธฐ์ต ๊ณต๊ฐ์ ๋ญ๋น๊ฐ ์ฌํ๋ค๋ ๋จ์ ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ํ์ด ๋ฐฉ๋ฒ
๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ฉด answer += v + ' ' ์์ ์์น์ ๋ฐ๋ผ ์ํํ๋ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๊ทธ๋๋ก ์ธ์ฐ๋ ๊ฒ๋ ๋ฐฉ๋ฒ์ผ ์ ์๊ฒ ์ง๋ง ์คํ ํ๋ ์์ ์ง์ ์จ๋ณด๋ฉด์ ๊ณผ์ ์ ์ดํด๋ณด๋ฉด ์ดํดํ๋๋ฐ ๋ง์ ๋์์ด ๋๋ค.
- ์ผ์ชฝ ์์ ๋ ธ๋๋ ๋ถ๋ชจ ๋ ธ๋์ * 2์ ํด๋นํ๊ณ , ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ ๋ถ๋ชจ ๋ ธ๋์ * 2 + 1์ ํด๋นํ๋ค.
function solution(n) {
let answer = '';
function DFS(v) {
if (v > 7) return;
else {
// ์ ์์ํ
answer += v + ' ';
DFS(v * 2);
// ์ค์์ํ
// answer += v + ' ';
DFS(v * 2 + 1);
// ํ์์ํ
// answer += v + ' ';
}
}
DFS(n);
return answer;
}
console.log(solution(1));
๐ป ์ฐธ๊ณ ํ ์ฌ์ดํธ
https://ywtechit.tistory.com/m/309
[ ์๋ฐ์คํฌ๋ฆฝํธ(JavaScript) ] section08 - 3 - ์ด์งํธ๋ฆฌ ์ํ(๊น์ด์ฐ์ ํ์)
๐ section08 - 3 - ์ด์งํธ๋ฆฌ ์ํ(๊น์ด์ฐ์ ํ์) ์ด์งํธ๋ฆฌ ์ํ๊ฐ ๋ฌด์์ธ์ง ๋ชจ๋ฅด๋ ์ฌ๋์ ์ด๋ ค์ธ ์ ์๋ ๋ฌธ์ ๋ค. ์ฌ๊ธฐ์ ์ด์งํธ๋ฆฌ๋ ๋๋ฌด๋ฅผ ๋ค์ง์ด ๋์ ๋ชจ์์ผ๋ก ํ ๊ฐ์ ๋ถ๋ชจ ๋ ธ๋์ 2๊ฐ์ ์
ywtechit.tistory.com
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 8] 05 - ํฉ์ด ๊ฐ์ ๋ถ๋ถ์งํฉ (0) | 2022.10.21 |
---|---|
[JavaScript/section 8] 04 - ๋ถ๋ถ์งํฉ ๊ตฌํ๊ธฐ (0) | 2022.10.20 |
[JavaScript/section 8] 02 - ์ด์ง์ ์ถ๋ ฅ(์ฌ๊ท) (0) | 2022.10.14 |
[JavaScript/section 8] 01 - ์ฌ๊ทํจ์ (0) | 2022.10.14 |
[JavaScript/section 7] 12 - ๋ง๊ตฌ๊ฐ ์ ํ๊ธฐ (0) | 2022.10.12 |