Tree ์๋ฃ๊ตฌ์กฐ๋ ์ด๋ฆ ๊ทธ๋๋ก ๋๋ฌด์ ํํ๋ฅผ ๊ฐ์ง๊ณ ์๋ค ํ์ง๋ง ๋๋ฌด๋ฅผ ๊ฑฐ๊พธ๋ก ๋ค์ง์ ๋ชจ์ต์ด๋ค.
๋จ๋ฐํฅ ๊ทธ๋ํ์ ํ ๊ตฌ์กฐ๋ก, ๋ฟ๋ฆฌ๋ถํฐ ๊ฐ์ง๊น์ง ์ฌ๋ฐฉ์ผ๋ก ๋ป์ด๋๊ฐ๋๊ฒ ๋๋ฌด์ ์ ์ฌํด์ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค.
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ์๋์ ์๋ ํ๋ ์ด์์ ๋ฐ์ดํฐ์ ๋ฌด๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ณ์ธต์ ์๋ฃ๊ตฌ์กฐ์ด๋ค
๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋์ด์ํจ ์ ํ ๊ตฌ์กฐ๊ฐ ์๋, ํ๋์ ๋ฐ์ดํฐ ์๋์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ์ ์๋ ๋น์ ํ๊ตฌ์กฐ
์ด๋ค.
ํธ๋ฆฌ ๊ตฌ์กฐ๋ root๋ฅผ ์์์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐํ๋ค.
ํ๋ ํ๋์ ์๋ค์ '๋
ธ๋(Node)' ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋
ธ๋๋ผ๋ฆฌ ์ฐ๊ฒฐ๋ ์ ์์ ๋
ธ๋๋ฅผ ๋ถ๋ชจ ๋
ธ๋(parent Node), ํ์ ๋
ธ๋๋ฅผ ์์ ๋
ธ๋ (Child Node) ๋ผ ํ๋ค.
์ด๋ ๊ฒ ์์์ด ์๋ ๋
ธ๋๋ ๋ฆฌํ ๋
ธ๋(Leaf Node) ๋ผ๊ณ ํ๋ค.
๋ํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๊น์ด์ ๋์ด, ๋ ๋ฒจ์ ์ธก์ ํ ์ ์๋๋ฐ,
ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๋ฃจํธ๋ก๋ถํฐ ํ์ ๊ณ์ธต์ ํน์ ๋
ธ๋๊น์ง์ ๊น์ด๋ฅผ ํํํ ์ ์๋ค.
๋ฃจํธ ๋
ธ๋๋ ์ง๋ฉด์ ์๋ ๊ฒ์ฒ๋ผ ๊น์ด๋ 0 ์ด๋ค.
๋ฃจํธ A ๊น์ด๋ 0
๋ฃจํธ B,C ๊น์ด๋ 1
๋ฃจํธ D,E,F,G ๊น์ด๋ 2
๋ด๋ ค๊ฐ์๋ก ์ซ์๋ ์ฆ๊ฐํ๋ค
ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๊ฐ์ ๊น์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ ธ๋๋ฅผ ๋ฌถ์ด์ ๋ ๋ฒจ๋ก ํํ์ด ๊ฐ๋ฅํ๋ค.
level1 : ๋ฃจํธ A ๊น์ด๋ 0
level2 : ๋ฃจํธ B,C ๊น์ด๋ 1
level3 : ๋ฃจํธ D,E,F,G ๊น์ด๋ 2
์ด๋ ๊ฒ ๋์ผํ ๋ ๋ฒจ์ ๋๋ํ ์๋ ๋ ธ๋๋ฅผ ํ์ ๋ ธ๋(Sibling Node) ๋ผ ํ๋ค.
ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๋ฆฌํ ๋
ธ๋
๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฃจํธ๊น์ง์ ๋์ด ํํ์ด ๊ฐ๋ฅํ๋ค
๋ฆฌํ ๋
ธ๋์ ์ง๊ฐ์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋
ธ๋์ ๋์ด๋ฅผ ํํํ๋ฉฐ, ๋ถ๋ชจ ๋
ธ๋๋ ์์ ๋
ธ๋์ ๊ฐ์ฅ ๋์ height + 1 ํ ๊ฐ์ ๊ฐ์ง๋ค.
๋ฆฌํ ๋
ธ๋๋ ๋์ด๋ฅผ 0 ์ผ๋ก ๋๋๋ค.
๊ทธ๋ฆผ ์์ ์์ ๋ฆฌํ ๋
ธ๋๋ H,I,E,F,J ์ด๋ฉฐ ๋์ด๋ 0 ์ด๋ค.
D,G์ ๋์ด๋ 1
B,C์ ๋์ด๋ 2
๋ฃจํธ A์ ๋์ด๋ 3 ์ด๋ค.
ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋ฃจํธ์์ ์์ ๋ ํฐ ํธ๋ฆฌ์ ๋ด๋ถ์์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ ์์ ํธ๋ฆฌ๋ฅผ ์๋ธ ํธ๋ฆฌ ๋ผ๊ณ ํ๋ค.
๊ฐ๋ตํ๊ฒ ์ธ ๊ฐ์ ์๋ธ ํธ๋ฆฌ๋ฅผ ํํํ๋ค.
(B D E)
(D H I)
(C F G J)
์ฉ์ด ์ ๋ฆฌ
๊ทธ๋ํ๋ ์ฌ๋ฌ๊ฐ์ ์ ๋ค์ด ์๋ก ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ ๊ด๊ณ๋ฅผ ํํํ ์๋ฃ๊ตฌ์กฐ ์ด๋ค.
์ํ์์์ ๊ทธ๋ํ์ ์ปดํจํฐ ๊ณตํ์์ ์ค๋ช
ํ๋ ์๋ฃ๊ตฌ์กฐ ๊ทธ๋ํ๋ ๋ค๋ฅธ ๋ชจ์ต์ด๋ค
์๋ฃ๊ตฌ์กฐ ๊ทธ๋ํ๋ ๊ฑฐ๋ฏธ์ค์ฒ๋ผ ์ฌ๋ฌ ๊ฐ์ ์ ๋ค์ด ์ ์ผ๋ก ์ด์ด์ ธ ์๋ ๋ณต์กํ ๋คํธ์ํฌ๋ง ์ฒ๋ผ ์๊ฒผ๋ค.
์ง์ ์ ์ธ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ ์ ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ ์ด ์๋ค.
๊ฐ์ ์ ์ธ ๊ด๊ณ๋ผ๋ฉด ๋ช ๊ฐ์ ์ ๊ณผ ์ ์ ๊ฑธ์ณ ์ด์ด์ง๋ค.
ํ๋์ ์ ์ ๊ทธ๋ํ์์ ์ ์ (vertex)๋ผ ํ๋ฉฐ, ํ๋์ ๊ฐ์ (edge)๋ผ ํ๋ค.
์ ๊ทธ๋ํ์์ V(vertex)= {0,1,2,3,4} E(edges) = {01,12,23,34,04,14,13}์ผ๋ก ํํ์ด ๊ฐ๋ฅํ๋ค
๋ ์ ์ ์ ์ด์ด์ฃผ๋ ๊ฐ์ ์ด ์๋ค๋ฉฐ ์ด ๋ ์ ์ ์ ์ธ์ ํ๋ค
๋ผ ๋งํ๋ค.
์ธ์ ํ๋ ฌ์ ์๋ก ๋ค๋ฅธ ์ ์ ๋ค์ด ์ธ์ ํ ์ํ์ธ์ง๋ฅผ ํ์ํ ํ๋ ฌ๋ก 2์ฐจ์ ๋ฐฐ์ด์ ํํ๋ก ๋ํ๋๋ค.
์ธ์ ๋ฆฌ์คํธ๋ ๊ฐ ์ ์ ์ด ์ด๋ค ์ ์ ๊ณผ ์ธ์ ํ๋์ง๋ฅผ ๋ฆฌ์คํธ์ ํํ๋ก ํํํ๋ค
๊ฐ ์ ์ ๋ง๋ค ํ๋์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด ๋ฆฌ์คํธ๋ ์์ ๊ณผ ์ธ์ ํ ๋ค๋ฅธ ์ ์ ์ ๋ด๊ณ ์๋ค.
๊ฐ์ ์ ์์๋ ๋ณดํต์ผ๋ก ์ค์ํ์ง ์๋ค
๊ทธ๋ํ, ํธ๋ฆฌ, ์คํ, ํ ๋ฑ ๋ชจ๋ ์๋ฃ๊ตฌ์กฐ๋ ๊ตฌํํ๋ ์ฌ๋์ ํธ์์ ๋ชฉ์ ์ ๋ฐ๋ผ ๊ธฐ๋ฅ์ ์ถ๊ฐ/์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ๊ทธ๋ํ๋ฅผ ์ธ์ ๋ฆฌ์คํธ๋ก ๊ตฌํํ ๋ ์ ์ ๋ณ๋ก ์ดํด๋ด์ผ ํ ์ฐ์ ์์๋ฅผ ๊ณ ๋ คํด ๊ตฌํํ ์๋ ์๋ค.
์ด๋, ๋ฆฌ์คํธ์ ๋ด๊ฒจ์ง ์ ์ ๋ค์ ์ฐ์ ์์๋ณ๋ก ์ ๋ ฌํ ์ ์๋ค.
๋ง์ฝ ์ฐ์ ์์๊ฐ ์๋ค๋ฉด, ์ฐ๊ฒฐ๋ ์ ์ ๋ค์ ๋จ์ํ๊ฒ ๋์ดํ ๋ฆฌ์คํธ๊ฐ ๋๋ค.
-- | ์ธ์ ํ๋ ฌ | ์ธ์ ๋ฆฌ์คํธ |
---|---|---|
์๊ฐ๋ณต์ก๋ | O(N^2) ์ ์ N * N๋งํผ ํ์ | O(N) N : ๊ฐ์ ์ ๊ฐ์ |
๋ ์ ์ ์ ์ฐ๊ฒฐ ์ฌ๋ถ | graph[x][y] ์ ๊ฐ์ผ๋ก ํ๋ฒ์ ํ์ธ | graph ์ ์์์์ y๊ฐ ๋์ฌ๋๊น์ง ํ์ |
์ธ์ ๋ ธ๋ ํ์ ์ฌ๋ถ | N * N๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋์ ํ์ธํ๋ค. | ๊ฐ ๋ฆฌ์คํธ์ ๋ด๊ฒจ์๋ ์์๋ฅผ ํ์ธํ๋ค |
ํ๋ ฌ์ ๊ฒฝ์ฐ, ๋ ์ ์ ์ด ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ด ์ฝ๋ค.
graph[x][y]์ ๊ฐ์ ๋ฐ๋ก ํ์ธํด ์ ๋ฌด๋ฅผ ํ๋จ ํ ์ ์๊ธฐ ๋๋ฌธ
๋จ, ์ ์ ์ด N๊ฐ์ธ ๊ฒฝ์ฐ, ํ๋ ฌ์ ๋ง๋ค๊ธฐ ์ํด์ N*N ๋งํผ์ ๊ณต๊ฐ์ด ํ์ํ๋ค
๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ๊ฒฝ์ฐ์ ์ ๋ฐ์ ๊ณต๊ฐ์ด ๋ญ๋น๋๋ ์
๋ฆฌ์คํธ์ ๊ฒฝ์ฐ, ์ค์ ์ฐ๊ฒฐ๋ ๋
ธ๋๋ค๋ง ๋ฆฌ์คํธ ์์์ ๋ด๊ฒจ์์ผ๋ฏ๋ก ๊ณต๊ฐ ๋ณต์ก๋๊ฐ N(๊ฐ์ )์ด๋ค.
๋ค๋ง, ๋ ์ ์ x,y๊ฐ ์ฐ๊ฒฐ๋์ด์๋์ง ์๊ณ ์ถ์ผ๋ฉด ๋
ธ๋x ๋ฆฌ์คํธ๋ก ๋ค์ด๊ฐ ์์ y๊ฐ ์๋์ง ์ฒ์๋ถํฐ ์ญ ํ์ํด์ผํด์ ํ๋ ฌ๋ณด๋ค ๋ ๋ง์ ์๊ฐ์ด ์์๋๋ค.
๊ฐ์ ์ด ๋ง์ ๊ทธ๋ํ์ ๊ฒฝ์ฐ์ ์ธ์ ํ๋ ฌ์ ํตํด ๋น ๋ฅด๊ฒ ์ฐ๊ฒฐ ์ฌ๋ถ ํ์ธ์ด ๊ฐ๋ฅ
๊ฐ์ ์ด ์ ์ ๊ทธ๋ํ์ ๊ฒฝ์ฐ์ ์ธ์ ๋ฆฌ์คํธ๋ฅผ ํตํด ์ธ์ ๋
ธ๋๋ฅผ ๋น ๋ฅด๊ฒ ํ์ธ์ด ๊ฐ๋ฅ
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ํธ๋ฆฌํ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ๊ฒ ์ธ ํจ์จ์ ์ธ ํ์์ ์ํด ์ฌ์ฉํ๊ธฐ๋ ํ๋ค
๊ฐ์ฅ ๊ฐ๋จํ๊ณ ๋ง์ด ์ฌ์ฉํ์ ์ด์ง ํธ๋ฆฌ(binary tree)์ ์ด์ง ํ์ ํธ๋ฆฌ (binary search tree)์ ๋ํด ์์๋ณด์
์ด์ง ํธ๋ฆฌ๋ ์๋ฃ์ ์ฌ์ , ์ญ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ ์ด์ง ํธ๋ฆฌ(Full binary tree). ์์ ์ด์ง ํธ๋ฆฌ(Complete binary tree), ํฌํ ์ด์ง ํธ๋ฆฌ(Perfect binary tree)๋ก ๋๋๋ค
์ด์ง ํ์ ํธ๋ฆฌ๋ ๋ชจ๋ ์ผ์ชฝ ์์์ ๊ฐ์ด ๋ฃจํธ๋ ๋ถ๋ชจ๋ณด๋ค ์๊ณ , ๋ชจ๋ ์ค๋ฅธ์ชฝ ์์์ ๊ฐ์ด ๋ฃจํธ๋ ๋ถ๋ชจ๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ง๋ ํน์ง์ด ์๋ค
์ด์ง ํ์ ํธ๋ฆฌ๋ ๊ท ํ ์กํ ํธ๋ฆฌ๊ฐ ์๋ ๋, ์
๋ ฅ๋๋ ๊ฐ์ ์์์ ๋ฐ๋ผ ํ์ชฝ์ผ๋ก ๋
ธ๋๋ค์ด ๋ชฐ๋ฆด์ ์๋ค
๊ท ํ์ด ์กํ์ง ์์ ํธ๋ฆฌ๋ ํ์ํ๋๋ฐ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ์ ํด๊ฒฐํด์ผ ํ ๋ฌธ์ ์ด๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฝ์
๊ณผ ์ญ์ ๋ง๋ค ํธ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ฌ์กฐ์ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ ์๊ณ ๋ฆฌ์ฆ์ ์ถ๊ฐํ ์ ์๋ค.
์์ธ->๋์ ->๋ถ์ฐ->์์ธ
์ด๋์ด ๊ฐ๋ฅํ๋ ์ฌ์ดํด์ด ์กด์ฌํ๋ ๊ทธ๋ํ์ด๋ค