๐ Algorithm
[์ฝ๋ฉ ํ ์คํธ ํฉ๊ฒฉ์ ๋๊ธฐ] ๋ฌธ์ 26 ํธ๋ฆฌ ์ํ
s2ylvia
2024. 9. 4. 19:31
๋ฌธ์ ์ค๋ช
์ด์ง ํธ๋ฆฌ๋ฅผ ํํํ ๋ฐฐ์ด node๋ฅผ ์ธ์๋ก ๋ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด์ nodes๊ฐ [1,2,3,4,5,6,7]์ด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํธ๋ฆฌ๋ฅผ ํํํ ๊ฒ์ ๋๋ค. ํด๋น ์ด์ง ํธ๋ฆฌ์ ๋ํ์ฌ ์ ์ ์ํ, ์ค์ ์ํ, ํ์ ์ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ solution()ํจ์๋ฅผ ๊ตฌํํ์ธ์.
์ ์ฝ ์กฐ๊ฑด
- ์ ๋ ฅ ๋ ธ๋๊ฐ์ ๊ฐ์๋ 1๊ฐ ์ด์ 1000๊ฐ ์ดํ์ด๋ค.
- ๋ ธ๋๊ฐ์ ์ ์ํ์ด๋ฉฐ, ์ค๋ณต๋์ง ์๋๋ค.
์ ์ถ๋ ฅ์ ์
nodes | return |
[1,2,3,4,5,6,7] | ["1 2 4 5 3 6 7", "4 2 5 1 6 3 7", "4 5 2 6 7 3 1"] |
์ ๋ต
const preorder(nodes, idx){
//์ ์์ํ(๋ถ์ผ์ค)
if(idx < nodes.length){
//๋
ธ๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ณด๋ค ์ธ๋ฑ์ค๊ฐ ์์๋
let ret = `${nodes[idx]}`; //๋ฃจํธ๋
ธ๋๋ฅผ ๋จผ์ ์ถ๋ ฅํ๋ค.(๋ถ)
ret += preorder(nodes, idx * 2 + 1) //์ธ๋ฑ์ค๋ก ๋๋ฆฌ๋๊น ์๋๋ ์ผ์ชฝ์ด i*2์ด์ง๋ง i*2+1๋ก(์ผ)
ret += preorder(nodes, idx * 2 + 2) //์ด๊ฒ๋ ์ค๋ฅธ์ชฝ์ผ๋ก i*2+1์ด์ง๋ง i*2+2(์ค)
return ret;
}
//idx๊ฐ ๊ฐ๊ฑฐ๋ ์์ผ๋ฉด ๋น ๋ฌธ์์ด ๋ฐํ
return "";
}
const inorder(nodex,idx){
//์ค์์ํ(์ผ๋ถ์ค)
if(idx < nodes.length){
let ret = inorder(nodes, idx*2+1);
ret += `${nodes[idx]}`;
ret += inorder(nodes, idx*2+2);
return ret;
}
return "";
}
const postorder(nodes,idx){
//ํ์์ํ(์ผ์ค๋ถ)
if(idx < nodes.length){
let ret = postorder(nodes, idx*2+1);
ret += postorder(nodes, idx*2+2);
ret += `${nodes[idx]}`;
return ret;
}
return "";
}
solution(nodes){
//slice๋ ๋ง์ง๋ง ๊ณต๋ฐฑ ์ ๊ฑฐ
return [preorder(nodes,0).slice(0,-1),inorder(nodes,0).slice(0, -1),postorder(nodes,0).slice(0,-1)];
}