ํธ๋ฆฌ๋ ๋ ธ๋๋ก ์ด๋ฃจ์ด์ง ๋น์ ํ์ ๊ตฌ์กฐ์ด๋ค.
๋ง์กฑํด์ผํ๋ ์กฐ๊ฑด 5๊ฐ์ง
- ์์์ ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๋ก ๊ฐ๋ ๊ฒฝ๋ก๋ ์ ์ผํ๋ค.
- ์ฌ์ดํด(ํ๋ก)๊ฐ ์กด์ฌํ์ง ์๋๋ค.
- ๋ชจ๋ ๋ ธ๋๋ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค.
- edge:๊ฐ์ ์ ํ๋ ์๋ฅด๋ฉด ํธ๋ฆฌ๊ฐ ๋๊ฐ๋ก ๋ถ๋ฆฌ๋๋ค.
- ๊ฐ์ ์ ์|E|๋ |V|์์ 1์ ๋บ ๊ฒ๊ณผ ๊ฐ๋ค.
ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ์ฉ์ด
- ๋ฃจํธ ๋ ธ๋: ๋ถ๋ชจ๊ฐ ์๋ ๋ ธ๋, ํธ๋ฆฌ๋ ํ๋์ ๋ฃจํธ๋ ธ๋๋ง์ ๊ฐ์ง๋ค.
- ๋จ๋ง ๋ ธ๋(terminal, leaf): ์์์ด ์๋ ๋ ธ๋
- ๋ด๋ถ ๋ ธ๋(Internal): ๋จ๋ง ๋ ธ๋๊ฐ ์๋ ๋ ธ๋
- ๋ถ๋ชจ ๋ ธ๋: ๋ฃจํธ ๋ ธ๋ ๋ฐฉํฅ์ผ๋ก ์ง์ ์ฐ๊ฒฐ๋ ๋ ธ๋
- ํ์ ๋ ธ๋: ๊ฐ์ ๋ถ๋ชจ๋ฅผ ๊ฐ์ง๋ ๋ ธ๋
- ์์ ๋ ธ๋: ๋ฃจํธ ๋ ธ๋ ๋ฐ๋๋ฐฉํฅ์ผ๋ก ์ง์ ์ฐ๊ฒฐ๋ ๋ ธ๋
- ๊ฐ์ : ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ์
- ๋ ธ๋์ ํฌ๊ธฐ: ์์ ์ ํฌํจํ ๋ชจ๋ ์์๋ ธ๋์ ๊ฐ์
- ๊น์ด: ๋ฃจํธ์์ ์ด๋ ๋ ธ๋์ ๋๋ฌํ๊ธฐ ์ํด ๊ฑฐ์ณ์ผํ๋ ๊ฐ์ ์ ์
- ๋ ๋ฒจ: ํธ๋ฆฌ์ ํน์ ๊น์ด๋ฅผ ๊ฐ์ง๋ ๋ ธ๋์ ์งํฉ
- ์ฐจ์: ๊ฐ ๋ ธ๋๊ฐ ์ง๋ ์์์ ์
- ํธ๋ฆฌ์ ์ฐจ์: ํธ๋ฆฌ์ ์ต๋ ์ฐจ์
- ํธ๋ฆฌ์ ๋์ด: ๋ฃจํธ ๋ ธ๋์์ ๊ฐ์ฅ ๊น์ํ ์๋ ๋ ธ๋์ ๊น์ด
์ด์งํธ๋ฆฌ๋ ์์ ๋ ธ๋๊ฐ ์ต๋ ๋๊ฐ์ ๋ ธ๋๋ค๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ์ด๋ค. ํ ์ ๋ ฌ๊ณผ ์ด์ง ํ์ ํธ๋ฆฌ๋ ๋ชจ๋ ์ด์ง ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ๊ธฐ๋ฒ์ด๋ค.
- ์ ์ด์ง ํธ๋ฆฌ(full)
- ์์ ๋
ธ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ๋
ธ๋๊ฐ ์์ ๋
ธ๋๋ฅผ
2๊ฐ ๋๋ 0๊ฐ๊ฐ์ง
- ์์ ๋
ธ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ๋
ธ๋๊ฐ ์์ ๋
ธ๋๋ฅผ
- ์์ ์ด์ง ํธ๋ฆฌ(complete)
๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋ชจ๋ ๋ ๋ฒจ์์ ๋ ธ๋๋ค์ด ๊ฝ ์ฑ์์ง ์ด์งํธ๋ฆฌ- ๋ฐ์ดํฐ๊ฐ
์ผ์ชฝ ๋จ๋ง๋ ธ๋๋ถํฐ ์ฑ์์ ธ์ผ ํ๋ค. - 1์ฐจ์ ๋ฐฐ์ด๋ก๋ ํํ์ด ๊ฐ๋ฅ
- ๊ท ํ ์ด์ง ํธ๋ฆฌ(balanced)
- ๋ชจ๋ ์์ ๋ ธ๋์ ๊น์ด ์ฐจ์ด๊ฐ ์ต๋ 1์ธ ํธ๋ฆฌ
- ๊ท ํ ์ด์ง ํธ๋ฆฌ๋ ์์ธก ๊ฐ๋ฅํ ๊น์ด๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ ธ๋๊ฐ n๊ฐ์ธ ๊ท ํ ์ด์ง ํธ๋ฆฌ์ ๊น์ด๋ log n์ ๋ด๋ฆผํ ๊ฐ์ ๊ฐ์ง๋ค.
์ ์ ์ํ ์ฝ๋
def preorder(self, node):
print(node, end = '')
if not node.left == None : self.preorder(node.left)
if not node.right == None : self.preorder(node.right)์ค์ ์ํ ์ฝ๋
def inorder(self, node):
if not node.left == None : self.preorder(node.left)
print(node, end = '')
if not node.right == None : self.preorder(node.right)ํ์ ์ํ ์ฝ๋
def preorder(self, node):
if not node.left == None : self.preorder(node.left)
if not node.right == None : self.preorder(node.right)
print(node, end = '')- ์ด์ง ํธ๋ฆฌ์ ์ผ์ข ์ผ๋ก ๋ ธ๋ ์ผ์ชฝ์ ์๊ธฐ ์์ ๋ณด๋ค ์์ ๊ฐ๋ง ๊ฐ์ง๊ณ , ์ค๋ฅธ์ชฝ์ ์๊ธฐ ์์ ๋ณด๋ค ํฐ ๊ฐ๋ง์ ๊ฐ์ง๋ค.
- ์ด๋ ๊ฒ ๊ตฌ์ฑํ๋ฉด ์ด๋ค ๊ฐ n์ ์ฐพ์ ๋, ๋ฃจํธ ๋ ธ๋์ ๋น๊ตํด์ n์ด ๋ ์๋ค๋ฉด ์ค๋ฅธ์ชฝ ํธ๋ฆฌ๋ฅผ ํ์ํ ํ์๊ฐ ์๋ค.
- ์ด์์ ์ธ ์ํฉ์์ ํ์/์ฝ์ /์ญ์ ๋ชจ๋ ์๊ฐ ๋ณต์ก๋๊ฐ O(logn)์ด๋ค. (์ด์์ ์ธ ์ํฉ = ๊ท ํ์ก์ธ ์ด์ง ํธ๋ฆฌ)