์ถ์ฒ :
๋ฌธ์ |
๊ธธ ์ฐพ๊ธฐ ๊ฒ์
์ ๋ฌด๋ก ์น์งํ ๋ผ์ด์ธ์ ๊ธฐ๋ถ์ด ๋๋ฌด ์ข์ ํ๋ ์ฆ๋ฅผ ์ด๋๊ณ ํน๋ณ ํด๊ฐ๋ฅผ ๊ฐ๊ธฐ๋ก ํ๋ค.
๋ด์น๊น์ ์ฌํ ๊ณํ๊น์ง ๊ตฌ์ํ๋ ๋ผ์ด์ธ์ ์ฌ๋ฏธ์๋ ๊ฒ์์ ์๊ฐํด๋๊ณ ์ญ์ ์ ๋ฌด๋ก ์น์งํ ๋งํ ์ธ์ฌ๋ผ๊ณ ์ค์ค๋ก์๊ฒ ๊ฐํํ๋ค.
๋ผ์ด์ธ์ด ๊ตฌ์ํ(๊ทธ๋ฆฌ๊ณ ์๋ง๋ ๋ผ์ด์ธ๋ง ์ฆ๊ฑฐ์ธ๋งํ) ๊ฒ์์, ์นด์นด์ค ํ๋ ์ฆ๋ฅผ ๋ ํ์ผ๋ก ๋๋๊ณ , ๊ฐ ํ์ด ๊ฐ์ ๊ณณ์ ๋ค๋ฅธ ์์๋ก ๋ฐฉ๋ฌธํ๋๋ก ํด์ ๋จผ์ ์ํ๋ฅผ ๋ง์น ํ์ด ์น๋ฆฌํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฅ ์ง๋๋ฅผ ์ฃผ๊ณ ๊ฒ์์ ์์ํ๋ฉด ์ฌ๋ฏธ๊ฐ ๋ํด์ง๋ฏ๋ก, ๋ผ์ด์ธ์ ๋ฐฉ๋ฌธํ ๊ณณ์ 2์ฐจ์ ์ขํ ๊ฐ์ ๊ตฌํ๊ณ ๊ฐ ์ฅ์๋ฅผ ์ด์งํธ๋ฆฌ์ ๋ ธ๋๊ฐ ๋๋๋ก ๊ตฌ์ฑํ ํ, ์ํ ๋ฐฉ๋ฒ์ ํํธ๋ก ์ฃผ์ด ๊ฐ ํ์ด ์ค์ค๋ก ๊ฒฝ๋ก๋ฅผ ์ฐพ๋๋ก ํ ๊ณํ์ด๋ค.
๋ผ์ด์ธ์ ์๋์ ๊ฐ์ ํน๋ณํ ๊ท์น์ผ๋ก ํธ๋ฆฌ ๋ ธ๋๋ค์ ๊ตฌ์ฑํ๋ค.
- ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ๋ ธ๋์ x, y ์ขํ ๊ฐ์ ์ ์์ด๋ค.
- ๋ชจ๋ ๋ ธ๋๋ ์๋ก ๋ค๋ฅธ x๊ฐ์ ๊ฐ์ง๋ค.
- ๊ฐ์ ๋ ๋ฒจ(level)์ ์๋ ๋ ธ๋๋ ๊ฐ์ y ์ขํ๋ฅผ ๊ฐ์ง๋ค.
- ์์ ๋ ธ๋์ y ๊ฐ์ ํญ์ ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ์๋ค.
- ์์์ ๋ ธ๋ V์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ(left subtree)์ ์๋ ๋ชจ๋ ๋ ธ๋์ x๊ฐ์ V์ x๊ฐ๋ณด๋ค ์๋ค.
- ์์์ ๋ ธ๋ V์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ(right subtree)์ ์๋ ๋ชจ๋ ๋ ธ๋์ x๊ฐ์ V์ x๊ฐ๋ณด๋ค ํฌ๋ค.
์๋ ์์๋ฅผ ํ์ธํด๋ณด์.
๋ผ์ด์ธ์ ๊ท์น์ ๋ง๊ฒ ์ด์งํธ๋ฆฌ์ ๋ ธ๋๋ง ์ขํ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. (์ด์งํธ๋ฆฌ์ ๊ฐ ๋ ธ๋์๋ 1๋ถํฐ N๊น์ง ์์๋๋ก ๋ฒํธ๊ฐ ๋ถ์ด์๋ค.)
์ด์ , ๋ ธ๋๋ฅผ ์๋ ๊ฐ์ (edge)์ ๋ชจ๋ ๊ทธ๋ฆฌ๋ฉด ์๋์ ๊ฐ์ ๋ชจ์์ด ๋๋ค.
์ ์ด์งํธ๋ฆฌ์์ ์ ์ ์ํ(preorder), ํ์ ์ํ(postorder)๋ฅผ ํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๊ณ , ์ด๊ฒ์ ๊ฐ ํ์ด ๋ฐฉ๋ฌธํด์ผ ํ ์์๋ฅผ ์๋ฏธํ๋ค.
์ ์ ์ํ : 7, 4, 6, 9, 1, 8, 5, 2, 3
ํ์ ์ํ : 9, 6, 5, 8, 1, 4, 3, 2, 7
๋คํํ ๋ ํ ๋ชจ๋ ๋จธ๋ฆฌ๋ฅผ ๋ชจ์ ๋ถ์ํ ๋์ ๋ผ์ด์ธ์ ์๋๋ฅผ ๊ฐ์ ํ ์์์ฐจ๋ ธ๋ค.
๊ทธ๋ฌ๋ ์ฌ์ ํ ๋ฌธ์ ๋ ๋จ์์๋ค. ๋ ธ๋์ ์๊ฐ ์์์ฒ๋ผ ์ ๋ค๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๊ฒ ์ง๋ง, ์์๋๋ก ๋ผ์ด์ธ์ ๊ทธ๋ ๊ฒ ํ ์๊ฐ์ด ์ ํ ์์๋ค.
์ด์ ๋น์ ์ด ๋์ค ๋๊ฐ ๋์๋ค.
๊ณค๊ฒฝ์ ๋น ์ง ์นด์นด์ค ํ๋ ์ฆ๋ฅผ ์ํด ์ด์งํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋ ธ๋๋ค์ ์ขํ๊ฐ ๋ด๊ธด ๋ฐฐ์ด nodeinfo๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
๋ ธ๋๋ค๋ก ๊ตฌ์ฑ๋ ์ด์งํธ๋ฆฌ๋ฅผ ์ ์ ์ํ, ํ์ ์ํํ ๊ฒฐ๊ณผ๋ฅผ 2์ฐจ์ ๋ฐฐ์ด์ ์์๋๋ก ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์.
์ ํ์ฌํญ
- nodeinfo๋ ์ด์งํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ ๋ ธ๋์ ์ขํ๊ฐ 1๋ฒ ๋ ธ๋๋ถํฐ ์์๋๋ก ๋ค์ด์๋ 2์ฐจ์ ๋ฐฐ์ด์ด๋ค.
- nodeinfo์ ๊ธธ์ด๋ 1 ์ด์ 10,000 ์ดํ์ด๋ค.
- nodeinfo[i] ๋ i + 1๋ฒ ๋ ธ๋์ ์ขํ์ด๋ฉฐ, [x์ถ ์ขํ, y์ถ ์ขํ] ์์ผ๋ก ๋ค์ด์๋ค.
- ๋ชจ๋ ๋ ธ๋์ ์ขํ ๊ฐ์ 0 ์ด์ 100,000 ์ดํ์ธ ์ ์์ด๋ค.
- ํธ๋ฆฌ์ ๊น์ด๊ฐ 1,000 ์ดํ์ธ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
- ๋ชจ๋ ๋ ธ๋์ ์ขํ๋ ๋ฌธ์ ์ ์ฃผ์ด์ง ๊ท์น์ ๋ฐ๋ฅด๋ฉฐ, ์๋ชป๋ ๋ ธ๋ ์์น๊ฐ ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ ์ถ๋ ฅ ์
nodeinfo |
result |
[[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]] |
[[7,4,6,9,1,8,5,2,3],[9,6,5,8,1,4,3,2,7]] |
ํ์ด๊ณผ์ |
1.๊ท์น
- ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ๋ ธ๋์ x, y ์ขํ ๊ฐ์ ์ ์์ด๋ค.
- ๋ชจ๋ ๋ ธ๋๋ ์๋ก ๋ค๋ฅธ x๊ฐ์ ๊ฐ์ง๋ค.
- ๊ฐ์ ๋ ๋ฒจ(level)์ ์๋ ๋ ธ๋๋ ๊ฐ์ y ์ขํ๋ฅผ ๊ฐ์ง๋ค.
- ์์ ๋ ธ๋์ y ๊ฐ์ ํญ์ ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ์๋ค.
- ์์์ ๋ ธ๋ V์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ(left subtree)์ ์๋ ๋ชจ๋ ๋ ธ๋์ x๊ฐ์ V์ x๊ฐ๋ณด๋ค ์๋ค.
- ์์์ ๋ ธ๋ V์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ(right subtree)์ ์๋ ๋ชจ๋ ๋ ธ๋์ x๊ฐ์ V์ x๊ฐ๋ณด๋ค ํฌ๋ค.
- nodeinfo๋ ์ด์งํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ ๋ ธ๋์ ์ขํ๊ฐ 1๋ฒ ๋ ธ๋๋ถํฐ ์์๋๋ก ๋ค์ด์๋ 2์ฐจ์ ๋ฐฐ์ด์ด๋ค.
- nodeinfo์ ๊ธธ์ด๋ 1 ์ด์ 10,000 ์ดํ์ด๋ค.
- nodeinfo[i] ๋ i + 1๋ฒ ๋ ธ๋์ ์ขํ์ด๋ฉฐ, [x์ถ ์ขํ, y์ถ ์ขํ] ์์ผ๋ก ๋ค์ด์๋ค.
- ๋ชจ๋ ๋ ธ๋์ ์ขํ ๊ฐ์ 0 ์ด์ 100,000 ์ดํ์ธ ์ ์์ด๋ค.
- ํธ๋ฆฌ์ ๊น์ด๊ฐ 1,000 ์ดํ์ธ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
- ๋ชจ๋ ๋ ธ๋์ ์ขํ๋ ๋ฌธ์ ์ ์ฃผ์ด์ง ๊ท์น์ ๋ฐ๋ฅด๋ฉฐ, ์๋ชป๋ ๋ ธ๋ ์์น๊ฐ ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๋ ์๋ค.
2.์์
(1) ๊ตฌ์กฐ์ฒด ์ ์ธ, ๋ฒกํฐ ์ด๊ธฐํ
id, x, y, left๋ ธ๋, right๋ ธ๋๋ฅผ ๊ฐ์ง ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฒกํฐ์ ํ์ ์ผ๋ก ์ฌ์ฉํ์ฌ, ์ด์งํธ๋ฆฌ๋ก ํด๊ฒฐํฉ๋๋ค.
์์๋ ธ๋์ y๊ฐ์ ํญ์ ๋ถ๋ชจ๋ ธ๋๋ณด๋ค ์์ผ๋ฏ๋ก y๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ, y๊ฐ์ด ๊ฐ๋ค๋ฉด(๊ฐ์ level์ด๋ผ๋ฉด) x๊ฐ์ด ์์์์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
(2) ์์๋ ธ๋ ์ฐ๊ฒฐ
๋ถ๋ชจ๋ ธ๋์ left ๋๋ right ํฌ์ธํฐ๊ฐ NULL์ด๋ผ๋ฉด ์์๋ ธ๋๋ฅผ ๋ฐ๋ก ๋ถ์ผ ์ ์์ง๋ง, ์๋ ๊ฒฝ์ฐ ๋งจ ๋ง์ง๋ง level๋ก ๋ด๋ ค๊ฐ ํ์ ์ด์ด๋ถ์ ๋๋ค.
(3) preorder(์ ์ ์ํ) & postorder(ํ์ ์ํ)
์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ์ฌ ์ ์์ํ๋ Root L R ์ ์์๋ก id๋ค์ ์ ๋ต๋ฒกํฐ์ ๋ด๊ณ ,
ํ์ ์ํ๋ L R Root์ ์์๋ก id๋ค์ ์ ๋ต๋ฒกํฐ์ ๋ด์ต๋๋ค.
3.์ฝ๋