์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค!
์ค๋์ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ ์ค ํจ์จ์ ์ธ ๊ฒ์,์ฝ์ ,์ญ์ ๋ฅผ ํ ์ ์๋ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
์ด์ง ํธ๋ฆฌ(Binary Tree)๋? ๐ค
์ด์ง ํ์ ํธ๋ฆฌ๋ ์ด์ง ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ ๋จผ์ ์ด์ง ํธ๋ฆฌ๊ฐ ๋ญ์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ด์ง ํธ๋ฆฌ๋ ๊ฐ๊ฐ์ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ ํธ๋ฆฌ ์๋ฃ ๊ตฌ์กฐ๋ก, ์์ ๋ ธ๋๋ฅผ ๊ฐ๊ฐ ์ผ์ชฝ ์์ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ผ๊ณ ํ๋ค.... - ์ํค ๋ฐฑ๊ณผ -
์ฆ, ๋ ธ๋๋ง๋ค ์์์ด 2๊ฐ ์ดํ์ธ ํธ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค.
์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์ด๋ฃจ์ด์ง ํธ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค. (์์์ด ์์ด๋ ๋๊ณ , ํ๋์ฌ๋ ๋๊ณ , ๋ ๊ฐ์ฌ๋ ๋ฉ๋๋ค.)
์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)๋? ๐ง
์ด์ง ํ์ ํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ด ์๋ ์ด์ง ํธ๋ฆฌ ์๋ฃ ๊ตฌ์กฐ์ด๋ค.
โ ๊ฐ ๋ ธ๋์ ๊ฐ์ด ์๋ค.
โ ๊ฐ๋ค์ ์ ์์๊ฐ ์๋ค.
โ ๋ ธ๋์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์๋ ๊ทธ ๋ ธ๋์ ๊ฐ๋ณด๋ค ์์ ๊ฐ๋ค์ ์ง๋ ๋ ธ๋๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
โ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์๋ ๊ทธ ๋ ธ๋์ ๊ฐ๋ณด๋ค ํฐ ๊ฐ๋ค์ ์ง๋ ๋ ธ๋๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
โ ์ข์ฐ ํ์ ํธ๋ฆฌ๋ ๊ฐ๊ฐ์ด ๋ค์ ์ด์ง ํ์ ํธ๋ฆฌ์ฌ์ผ ํ๋ค.
- ์ํค ๋ฐฑ๊ณผ -
์ฆ, ๊ฐ๋จํ๊ฒ ๋งํด ์ด์ง ํธ๋ฆฌ๋ก ๋์ด์๋๋ฐ ์์์ ์ผ์ชฝ ๊ฐ์ด ๋ถ๋ชจ๋ณด๋ค ์๊ณ ์ค๋ฅธ์ชฝ ๊ฐ์ด ๋ถ๋ชจ๋ณด๋ค ํฌ๋ฉด ๋ฉ๋๋ค.
์๋์ ๊ฐ์ ๊ทธ๋ฆผ์ผ๋ก ๋์ด ์๋๊ฒ ๋ฐ๋ก ์ด์ง ํ์ ํธ๋ฆฌ์์!
Time Complexity (์๊ฐ๋ณต์ก๋)
์คํ ์๊ฐ์ ํ๊ท ์ ์ผ๋ก ํธ๋ฆฌ์ ๋์ด๋งํผ ๐ฏ(logโN)์ด ๊ฑธ๋ฆฌ์ง๋ง
์๋์ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ํ ์ชฝ์ผ๋ก ๋ชฐ๋ฆด ๊ฒฝ์ฐ(์ต์ ์ ๊ฒฝ์ฐ) O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
Search(ํ์)
[3,7,4,5,1,8,2,6]๋ก ๋์ด์๋ ์ด์ง ํ์ ํธ๋ฆฌ์์ ํ์ํ๋ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
1. ์ฐพ์ผ๋ ค๋ ๊ฐ์ด ์๋ค๋ฉด ์์น๋ฅผ ๋ฐํํ๋ค.
2. ์๋ค๋ฉด nil์ ๋ฐํํ๋ค.
์๋ ๊ทธ๋ฆผ์์ 5๋ฅผ ์ฐพ์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํ ๊น์?
๋ฃจํธ ๋ ธ๋์ธ 3๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ์ ์๊ฒ ์ฃ ? 7๋ก ๋ด๋ ค๊ฐ๋๋ค.
7๋ณด๋ค ์์ผ๋ฏ๋ก ์ผ์ชฝ์ ์๊ฒ ์ฃ ? 4๋ก ๋ด๋ ค๊ฐ๋๋ค.
4๋ณด๋ค ํฌ๋ฏ๋ก ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํฉ๋๋ค.
5๋ฅผ ์ฐพ์์ผ๋ฏ๋ก ์์น๋ฅผ ๋ฐํํฉ๋๋ค.
Insertion(์ฝ์ )
์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ์ฝ์ ํ๋ ๊ณผ์ ์ ์ด๋ป๊ฒ ๋ ๊น์?
1. ์๋ฌด๊ฒ๋ ์์ผ๋ฉด ๊ทธ๋ฅ ์ฝ์
2. ๋ ธ๋๊ฐ ์๋ค๋ฉด ํ์ฌ ์ซ์๋ณด๋ค ํฌ๋ฉด ์ค๋ฅธ์ชฝ,์์ผ๋ฉด ์ผ์ชฝ์ผ๋ก ์์์ผ๋ก ๋ด๋ ค๊ฐ๋๋ค.
3. ์์์ด ์์ผ๋ฉด ์ฝ์ ํฉ๋๋ค.
[3,7,4,5,1,8,2,6]์ ์ฝ์ ํ๋ ๊ณผ์ ์ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
ํธ๋ฆฌ์ ์๋ฌด๊ฒ๋ ์์ผ๋ 3์ ์ฝ์ ํด์ค๋๋ค.
๊ทธ ๋ค์ ์ซ์์ธ 7์ ๋๋ค.
3๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ ์ค๋ฅธ์ชฝ์ ์ฝ์ ํฉ๋๋ค.
๊ทธ ๋ค์ ์ซ์๋ 4์ ๋๋ค.
3๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ,7๋ณด๋ค ์์ผ๋๊น ์ผ์ชฝ์ผ๋ก ์ฝ์ ํฉ๋๋ค.
๊ทธ ๋ค์ ์ซ์๋ 5์ ๋๋ค.
3๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ,7๋ณด๋ค ์์ผ๋๊น ์ผ์ชฝ,4๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ์ ์ฝ์ ํฉ๋๋ค.
๊ทธ ๋ค์ ์ซ์๋ 1์ ๋๋ค.
3๋ณด๋ค ์์ผ๋ฏ๋ก ์ผ์ชฝ์ ์ฝ์ ํฉ๋๋ค.
๊ทธ ๋ค์ ์ซ์๋ 8์ ๋๋ค.
3๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ,7๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ์ ๋ฐฐ์นํฉ๋๋ค.
๊ทธ ๋ค์ ์ซ์๋ 2์ ๋๋ค.
3๋ณด๋ค ์์ผ๋ฏ๋ก ์ผ์ชฝ,1๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ์ ๋ฐฐ์นํฉ๋๋ค.
๊ทธ ๋ค์ ์ซ์๋ 6์ ๋๋ค.
3๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ,7๋ณด๋ค ์์ผ๋๊น ์ผ์ชฝ,4๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ,5๋ณด๋ค ํฌ๋๊น ์ค๋ฅธ์ชฝ์ ๋ฐฐ์นํฉ๋๋ค.
Deletion(์ญ์ )
์ญ์ ํ๋ ๊ณผ์ ์ ํ์์ด๋ ์ฝ์ ๋ณด๋ค ์ด์ง ๋ ๋ณต์กํฉ๋๋ค.
์ด 3๊ฐ์ง์ ์ผ์ด์ค๊ฐ ์๋๋ฐ์.
1. ์์์ด ์๋ ๊ฒฝ์ฐ
2. ์์์ด ํ ๊ฐ์ธ ๊ฒฝ์ฐ
3. ์์์ด ๋ ๊ฐ์ธ ๊ฒฝ์ฐ
1. ์์์ด ์๋ ๊ฒฝ์ฐ
๋จผ์ ์์์ด ์๋ ๊ฒฝ์ฐ์ธ 2๋ฅผ ์ญ์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
๊ทธ๋ฅ ์ญ์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
2. ์์์ด ํ ๊ฐ์ธ ๊ฒฝ์ฐ
์์์ด ํ ๊ฐ์ธ ๊ฒฝ์ฐ์ธ 4๋ฅผ ์ญ์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
์ญ์ ํ๊ณ ํด๋น ์์น์ ์์์ ์์นํฉ๋๋ค.
3. ์์์ด ๋ ๊ฐ์ธ ๊ฒฝ์ฐ
์์์ด ๋ ๊ฐ์ธ ๊ฒฝ์ฐ์ธ 7์ ์ญ์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
๋ฐฉ๋ฒ์ 2๊ฐ์ง์ธ๋ฐ์.
1. ์ค๋ฅธ์ชฝ ์์ ์ค ๊ฐ์ฅ ์์ ๊ฐ์ ๋์ฒดํ๋ค.
2. ์ผ์ชฝ ์์ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ๋์ฒดํ๋ค.
์ ๋ ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก ์ค๋ฅธ์ชฝ ์์ ์ค ๊ฐ์ฅ ์์ ๊ฐ์ธ 8์ ๋์ฒดํด ์ฃผ์์ต๋๋ค.
๋๊ธ