Tree
1. Tree์ ์ ์
๋จ๋ฐฉํฅ ๊ทธ๋ํ์ ํ ๊ตฌ์กฐ๋ก, ํ๋์ ๋ฟ๋ฆฌ๋ก๋ถํฐ ๊ฐ์ง๊ฐ ์ฌ๋ฐฉ์ผ๋ก ๋ป์ ํํ๊ฐ ๋๋ฌด์ ๋ฎ์
๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ์๋์ ์๋ ํ๋ ์ด์์ ๋ฐ์ดํฐ์ ํ ๊ฐ์ ๊ฒฝ๋ก์ ํ๋์ ๋ฐฉํฅ์ผ๋ก๋ง ์ฐ๊ฒฐ๋ ๊ณ์ธต์ ์๋ฃ๊ตฌ์กฐ
๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋์ด์ํจ ์ ํ๊ตฌ์กฐ๊ฐ ์๋, ํ๋์ ๋ฐ์ดํฐ ์๋์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ์ ์๋ ๋น์ ํ ๊ตฌ์กฐ
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๊ณ์ธต์ ์ผ๋ก ํํ์ด ๋๊ณ , ์๋๋ก๋ง ๋ป์ด๋๊ฐ๊ธฐ ๋๋ฌธ์ ์ฌ์ดํด์ด ์์
์ฆ, ์ฌ์ดํด์ด ์๋ ํ๋์ ์ฐ๊ฒฐ ๊ทธ๋ํ๋ผ๊ณ ํ ์ ์์
2. Tree์ ๊ตฌ์กฐ
๋ฃจํธ(Root)๋ผ๋ ํ๋์ ๊ผญ์ง์ ๋ฐ์ดํฐ๋ก ์์ํด ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ **๊ฐ์ (Edge)**๋ก ์ฐ๊ฒฐ
๊ฐ ๋ฐ์ดํฐ๋ฅผ **๋ ธ๋(Node)**๋ผ๊ณ ํ๋ฉฐ, ๋ ๊ฐ์ ๋ ธ๋๊ฐ ์ํ ๊ณ์ธต์ผ๋ก ์ฐ๊ฒฐ๋๋ฉด ๋ถ๋ชจ/์์ ๊ด๊ณ๋ฅผ ๋งบ์
์์์ด ์๋ ๋ ธ๋๋ ๋๋ฌด์ ์๊ณผ ๊ฐ๋ค๊ณ ํ์ฌ **๋ฆฌํ ๋ ธ๋(leaf node)**๋ผ๊ณ ํจ
๊น์ด
๋ฃจํธ๋ก๋ถํฐ ํ์ ๊ณ์ธต์ ํน์ ๋ ธ๋๊น์ง์ ๊น์ด
๋ฃจํธ ๊น์ด๋ 0
๋ ๋ฒจ
๊ฐ์ ๊น์ด๋ฅผ ๊ฐ์ง ๋ ธ๋๋ฅผ ๋ฌถ์ด ๋ ๋ฒจ๋ก ํํ ๊ฐ๋ฅ
๊น์ด๊ฐ 0์ธ ๋ฃจํธ์ ๋ ๋ฒจ์ 1
๊ฐ์ ๋ ๋ฒจ์ ๋๋ํ ์๋ ๋ ธ๋๋ฅผ ํ์ ๋ ธ๋(Sibling Node)๋ผ๊ณ ํจ
๋์ด
ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๋ฆฌํ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฃจํธ๊น์ง์ ๋์ด๋ฅผ ํํ ๊ฐ๋ฅ
๊ฐ ๋ฆฌํ ๋ ธ๋์ ๋์ด๋ฅผ 0์ผ๋ก ๋๊ณ , ๋ถ๋ชจ ๋ ธ๋๋ ์์ ๋ ธ๋์ ๊ฐ์ฅ ๋์ ๋์ด๊ฐ์ +1ํ ๊ฐ์ ๊ฐ์ง
์๋ธ ํธ๋ฆฌ
ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋ฃจํธ์์ ๋ป์ด๋์ค๋ ํฐ ํธ๋ฆฌ์ ๋ด๋ถ์ ํธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ ์์ ํธ๋ฆฌ
Tree์ ์ค์ฌ์ฉ ์์
์ปดํจํฐ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ, ์กฐ์ง๋ ๋ฑ
2. Binary Tree
์ด์ง ํธ๋ฆฌ์ ํน์ง
์์ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ธ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ
์๋ฃ์ ์ฝ์ /์ญ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
์ ์ด์งํธ๋ฆฌ(Full binary tree)
๊ฐ ๋ ธ๋๊ฐ 0๊ฐ ํน์ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง
ํฌํ ์ด์งํธ๋ฆฌ(Perfect binary tree)
์ ์ด์งํธ๋ฆฌ์ด๋ฉด์๋ ์์ ์ด์งํธ๋ฆฌ์ธ ๊ฒฝ์ฐ. ๋ชจ๋ ๋ฆฌํ ๋ ธ๋์ ๋ ๋ฒจ์ด ๋์ผํ๊ณ ๋ชจ๋ ๋ ๋ฒจ์ด ๊ฐ๋ ์ฑ์์ ธ ์์
์์ ์ด์งํธ๋ฆฌ(Complete binary tree)
๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฐ๋์ฐจ ์์ด์ผ ํ๋ฉฐ, ๋ง์ง๋ง ๋ ๋ฒจ์ ๋ ธ๋๋ ์ ๋ถ ์ฐจ์์ง ์์๋ ๋๋ ์ผ์ชฝ์ด ์ฑ์์ ธ ์์ด์ผ ํจ
3. Binary Search Tree
์ด์ง ํ์ ์ด๋?
์ ๋ ฌ๋ ๋ฐ์ดํฐ ์ค์์ ํน์ ํ ๊ฐ์ ์ฐพ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ์ ์์ ๋ฐฐ์ด์ ๊ฐ์ ํฌ๊ธฐ์ ๋ ๋ถ๋ถ ๋ฐฐ์ด๋ก ๋๋ ํ, ๋ ๋ถ๋ถ ์ค ํ์์ด ํ์ํ ๋ถ๋ถ์์๋ง ํ์ํ๋๋ก ํ์ ๋ฒ์๋ฅผ ์ ํํ์ฌ ์ํ๋ ๊ฐ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ
์ด์ง ํ์ ํธ๋ฆฌ
๋ชจ๋ ์ผ์ชฝ ์์์ ๊ฐ์ด ๋ฃจํธ๋ ๋ถ๋ชจ๋ณด๋ค ์๊ณ , ๋ชจ๋ ์ค๋ฅธ์ชฝ ์์์ ๊ฐ์ด ๋ฃจํธ๋ ๋ถ๋ชจ๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ง
๊ธฐ์กด ์ด์งํธ๋ฆฌ๋ณด๋ค ํ์์ด ๋น ๋ฆ
ํธ๋ฆฌ ์์ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ์๋๋ผ๋ ์ต๋ h๋ฒ(ํธ๋ฆฌ ๋์ด)๋งํผ์ ์ฐ์ฐ ๋ฐ ํ์์ด ์งํ๋จ
4. Tree Traversal
ํธ๋ฆฌ ์ํ ๋ฐฉ๋ฒ์ ๊ณตํต์
๋ชจ๋ ๋ ธ๋๋ฅผ ์ํํ ๋ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ์กฐํ
ํธ๋ฆฌ ์ํ ๋ฐฉ๋ฒ
์ ์ ์ํ (preorder traverse)
๋ฃจํธ์์ ์์ํด ์ผ์ชฝ์ ๋ ธ๋๋ค์ ์์ฐจ์ ์ผ๋ก ๋๋ฌ๋ณธ ๋ค, ์ผ์ชฝ์ ๋ ธ๋ ํ์์ด ๋๋๋ฉด ์ค๋ฅธ์ชฝ ๋ ธ๋๋ฅผ ํ์
์ ์ ์ํ๋ ์ฃผ๋ก ํธ๋ฆฌ๋ฅผ ๋ณต์ฌํ ๋ ์ฌ์ฉ
์ค์ ์ํ (inorder traverse)
์ ์ผ ์ผ์ชฝ ๋์ ์๋ ๋ ธ๋๋ถํฐ ์ํํ๊ธฐ ์์ํ์ฌ, ๋ฃจํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ ์๋ ๋ ธ๋์ ์ํ๊ฐ ๋๋๋ฉด ๋ฃจํธ๋ฅผ ๊ฑฐ์ณ ์ค๋ฅธ์ชฝ์ ์๋ ๋ ธ๋๋ก ์ด๋ํ์ฌ ๋ง์ ํ์
์ค์ ์ํ๋ ์ด์ง ํ์ ํธ๋ฆฌ์ ์ค๋ฆ์ฐจ์์ผ๋ก ๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ
ํ์ ์ํ (postorder traverse)
์ ์ผ ์ผ์ชฝ ๋์ ์๋ ๋ ธ๋๋ถํฐ ์ํํ๊ธฐ ์์ํ์ฌ, ๋ฃจํธ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํด ์ํํ ๋ค, ์ ์ผ ๋ง์ง๋ง์ ๋ฃจํธ๋ฅผ ๋ฐฉ๋ฌธ
ํ์ ์ํ๋ ํธ๋ฆฌ๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉ. ์์ ๋ ธ๋๊ฐ ๋จผ์ ์ญ์ ๋์ด์ผ ์์ ๋ ธ๋๋ฅผ ์ญ์ ํ ์ ์๊ธฐ ๋๋ฌธ
๋ ๋ฒจ ์ํ (levelorder traverse)
๋ฃจํธ๋ฅผ ๋ฐฉ๋ฌธํ๋ ๊ธฐ์ค์ผ๋ก ์ํ๋ฅผ ํ๋ ๊ฒ์ด ์๋ ํธ๋ฆฌ์ ๋ ๋ฒจ ๊ธฐ์ค์ผ๋ก ๋ ธ๋๋ค์ ๋ฐฉ๋ฌธ
๋ฃจํธ ๋ ธ๋์ ๋ ๋ฒจ์ด 1์ด๋ผ๊ณ ํ์ ๋ ์๋๋ก ๋ด๋ ค๊ฐ์๋ก ๋ ๋ฒจ์ ์ฆ๊ฐํ๋ ํน์ง
๋์ผํ ๋ ๋ฒจ์ ์ฌ๋ฌ ๋ ธ๋๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ์์๋ก ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธ
Last updated