728x90
Tree
๐ก ์๋ก ์ฐ๊ฒฐ๋ Node์ ๊ณ์ธตํ ์๋ฃ๊ตฌ์กฐ๋ก์จ, root์ ๋ถ๋ชจ-์์ ๊ด๊ณ์ subtree๋ก ๊ตฌ์ฑ๋จ
ํธ๋ฆฌ ๊ด๋ จ ์ฉ์ด
- ๋ ธ๋ : ๊ตฌ์ฑ ์์
- ๊ฐ์ (Edge) : ๋ ธ๋๊ฐ์ ์ฐ๊ฒฐ๋ ์
- ๋ฃจํธ ๋ ธ๋(Root) : ํธ๋ฆฌ์ ์์์
- ๋ฆฌํ ๋ ธ๋(Leaf) : ํธ๋ฆฌ์ ๋ง์ง๋ง ๋ ธ๋
- ์์ ๋ ธ๋(child), ๋ถ๋ชจ ๋ ธ๋(parent), ํ์ ๋ ธ๋(sibiling)
- ์ฐจ์ (degree) : ๊ฐ ๋ ธ๋ ๊ฐ๋ ์์์ ์, ๋ชจ๋ ๋ ธ๋์ ์ฐจ์๊ฐ n๊ฐ ์ดํ์ธ ํธ๋ฆฌ๋ฅผ n์ง ํธ๋ฆฌ๋ผ๊ณ ํ๋ค
- ์กฐ์ (ancestor) : ์์ชฝ์ผ๋ก ๊ฐ์ ์ ๋ฐ๋ผ๊ฐ๋ฉด ๋ง๋๋ ๋ชจ๋ ๋ ธ๋
- ์์ (descendant) : ์๋์ชฝ์ผ๋ก ๊ฐ์ ์ ๋ฐ๋ผ๊ฐ๋ฉด ๋ง๋๋ ๋ชจ๋ ๋ ธ๋
- ๋์ด (height) : ๋ฃจํธ ๋ ธ๋์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ์๋ ๋ฆฌํ ๋ ธ๋ ๊น์ง์ ๊ฑฐ๋ฆฌ, ์ฆ ๋ฆฌํ ๋ ธ๋์ค์ ์ต๋ ๋ ๋ฒจ ๊ฐ
- ์๋ธํธ๋ฆฌ (subtree) : ํธ๋ฆฌ์ ์ด๋ค ๋ ธ๋๋ฅผ ๋ฃจํธ๋ก ํ๊ณ , ๊ทธ ์์์ผ๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ
ํ์ฌ ์์ ๊ทธ๋ฆผ์ 2์งํธ๋ฆฌ์
Binary Tree
์์ ๊ทธ๋ฆผ์ฒ๋ผ ์ฐจ์๊ฐ 2๊ฐ ์ดํ์ธ ํธ๋ฆฌ๋ฅผ ์ด์ผ๊ธฐํ๋ค
์ฝํ ์์ ๊ฐ์ฅ ํ์ฉ์ด ๋ง์ด ๋๋ค
Complete Binary Tree
์์ 2์งํธ๋ฆฌ
๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋๋จธ์ง ๋ ๋ฒจ์ด ์ฐจ์๊ฐ 2๋ก ๊ฝ๊ฝ ์ฑ์์ ธ ์๋ ์ํ์ด๋ค
๊ฝ๊ฝ ์ฑ์์ผํ๊ธฐ ๋๋ฌธ์ ๋ง์ฝ์ ๋ ธ๋๋ฅผ ์ถ๊ฐ ํ๊ณ ์ถ๋ค๋ฉด ์์ ๊ทธ๋ฆผ ์ซ์์ฒ๋ผ ์ฐจ๋ก์ฐจ๋ก ๋ฃ์ด์ผํ๋ค
๋ ธ๋์ ๊ตฌํ
๋ ธ๋ ๊ตฌํํ๊ธฐ
class Node:
def __init__(self):
self.value = 0
self.left_child = None
self.right_child = None
2์งํธ๋ฆฌ ๊ตฌํ
class Node:
def __init__(self, value = 0, left = None, right = None):
self.value = 0
self.left = left
self.right = right
class BinaryTree:
def __init__(self):
self.root = None # ๋ฃจํธ ๋ง๋ค์ด์ฃผ๊ธฐ
bt = BinaryTree()
bt.root = Node(value=1)
bt.root.left = Node(value=2)
bt.root.right = Node(value=3)
bt.root.left.left = Node(value=4)
bt.root.left.right = Node(value=5)
bt.root.right.right = Node(value=6)
์ด ์ฝ๋๋ฅผ ํธ๋ฆฌ๊ตฌ์กฐ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ค๋ณด๋ฉด
๋ฐ์ํ
'coding test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DFS(์ ์, ์ค์ , ํ์) (0) | 2024.01.18 |
---|---|
ํธ๋ฆฌ์ํ - bfs (2) | 2024.01.10 |
์ฌ๊ทํจ์ (1) | 2024.01.09 |
๋์ ์ด๋ฆฌ ๋ฌธ์ 2 - Longest Consecutive Sequence (1) | 2024.01.04 |
๋์ ์ด๋ฆฌ ํ์ฉํด๋ณด๊ธฐ(Two sum) (0) | 2024.01.03 |