# ์ด์งํธ๋ฆฌ (BinaryTree)
written by sohyeon, hyemin ๐ก
# 1. ์ด์ง ํธ๋ฆฌ (BinaryTree)
๋ชจ๋ ๋
ธ๋๊ฐ 2๊ฐ์ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํธ๋ฆฌ๋ฅผ ์ด์งํธ๋ฆฌ(Binary Tree)
๋ผ๊ณ ํ๋ค.
์ด์ง ํธ๋ฆฌ๋ ๋ ธ๋๊ฐ ์ผ์ชฝ ์์๊ณผ ์ค๋ฅธ์ชฝ ์์์ ๊ฐ์ง๋ฉฐ, ๊ฐ ๋ ธ๋์ ์์์ 2๋ช ์ดํ๋ง ์ ์งํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด ๋ ธ๋ B์ ์ผ์ชฝ ์์์ D, ์ค๋ฅธ์ชฝ ์์์ E์ด๋ค.
์ด๋ ์ผ์ชฝ ์์์ ๋ค์ ๋ฃจํธ๋ก ํ๋ ์๋ธ ํธ๋ฆฌ๋ฅผ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ(left subtree)
, ์ค๋ฅธ์ชฝ ์์์ ๋ค์ ๋ฃจํธ๋ก ํ๋ ์๋ธ ํธ๋ฆฌ๋ฅผ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ(right subtree)
๋ผ๊ณ ํ๋ค.
์ผ๊ฐํ์ผ๋ก ๋ฌถ์ฌ์ ์๋ ๋ถ๋ถ์ด B์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ด๋ค.
# 2. ์ด์ง ํธ๋ฆฌ(BinaryTree)์ ์ผ๋ฐ ํธ๋ฆฌ์ ์ฐจ์ด์
์ด์ง ํธ๋ฆฌ์ ๋ชจ๋ ๋ ธ๋๋ ์ฐจ์๊ฐ 2์ดํ์ด๋ค. ์ฆ, ์์ ๋ ธ๋์ ๊ฐ์๊ฐ 2์ดํ์ด๋ค.
์ผ๋ฐ ํธ๋ฆฌ์๋ ๋ฌ๋ฆฌ ์ด์ง ํธ๋ฆฌ๋ ๋ ธ๋๋ฅผ ํ๋๋ ๊ฐ์ง ์์ ์๋ ์๋ค.
์ผ๋ฐ ํธ๋ฆฌ์๋ ๋ฌ๋ฆฌ ์ด์ง ํธ๋ฆฌ๋ ์๋ธ ํธ๋ฆฌ ๊ฐ์ ์์๊ฐ ์กด์ฌํ๋ค. ๋ฐ๋ผ์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ตฌ๋ณํ๋ค.
# 3. ์ด์ง ํธ๋ฆฌ์ ์ฑ์ง
n๊ฐ์ ๋ ธ๋
๋ฅผ ๊ฐ์ง ์ด์ง ํธ๋ฆฌ๋n-1๊ฐ์ ๊ฐ์
์ ๊ฐ์ง๋ค.
์ด์ง ํธ๋ฆฌ์์์ ๋ ธ๋๋ ๋ฃจํธ๋ฅผ ์ ์ธํ๋ฉด ์ ํํ๊ฒ ํ๋์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ถ๋ชจ์ ์์ ๊ฐ์๋ ์ ํํ๊ฒ ํ๋์ ๊ฐ์ ๋ง์ด ์กด์ฌํ๋ค.
# ex) ์์
๋
ธ๋์ ๊ฐ์ : 7, ๊ฐ์ ์ ๊ฐ์ : 6
๋์ด๊ฐ h
์ธ ์ด์ง ํธ๋ฆฌ์ ๊ฒฝ์ฐ,์ต์ h๊ฐ์ ๋ ธ๋
๋ฅผ ๊ฐ์ง๋ฉฐ,์ต๋ (2^h)-1๊ฐ์ ๋ ธ๋
๋ฅผ ๊ฐ์ง๋ค.
# ex) ์์
์ต์ ๋
ธ๋ ๊ฐ์ : 3, ์ต๋ ๋
ธ๋ ๊ฐ์ : 1 + 2 + 4 = 7
n๊ฐ์ ๋ ธ๋
๋ฅผ ๊ฐ์ง๋ ์ด์ง ํธ๋ฆฌ์ ๋์ด๋์ต๋ n
์ด๊ฑฐ๋์ต์ log2(n+1)์ ์ฌ๋ฆผ
์ด ๋๋ค.
# ex) ์์
์ต๋ ๋์ด : 3, ์ต์ ๋์ด : 2
# 4. ์ด์ง ํธ๋ฆฌ์ ๋ถ๋ฅ
# ํฌํ ์ด์ง ํธ๋ฆฌ(full binary tree)
ํธ๋ฆฌ์ ๊ฐ ๋ ๋ฒจ์ ๋ ธ๋๊ฐ ๊ฝ ์ฐจ ์๋ ์ด์ง ํธ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
# ์์ ์ด์ง ํธ๋ฆฌ(complete binary tree)
๋์ด๊ฐ k์ผ ๋ ๋ ๋ฒจ 1๋ถํฐ k-1๊น์ง๋ ๋ ธ๋๊ฐ ๋ชจ๋ ์ฑ์์ ธ ์๊ณ ๋ง์ง๋ง ๋ ๋ฒจ k์์๋ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ ธ๋๊ฐ ์์๋๋ก ์ฑ์์ ธ ์๋ ์ด์ง ํธ๋ฆฌ์ด๋ค.
๋ง์ง๋ง ๋ ๋ฒจ์์๋ ๋ ธ๋๊ฐ ๊ฝ ์ฐจ ์์ง ์์๋ ๋์ง๋ง ์ค๊ฐ์ ๋น ๊ณณ์ด ์์ด์๋ ์๋๋ค.
# Reference & Additional Resources
Do it! ์๋ฃ๊ตฌ์กฐ์ ํจ๊ป ๋ฐฐ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋ฌธ ์๋ฐํธ
C์ธ์ด๋ก ์ฝ๊ฒ ํ์ด์ด ์๋ฃ๊ตฌ์กฐ