ํธ๋ฆฌ (Tree) ๊ตฌ์กฐ
- Node์ Branch๋ฅผ ์ด์ฉํด์, ์ฌ์ดํด์ ์ด๋ฃจ์ง ์๋๋ก ๊ตฌ์ฑํ ๋ฐ์ดํฐ ๊ตฌ์กฐ
- ์ด์ง ํธ๋ฆฌ(Binary Tree) ํํ์ ๊ตฌ์กฐ, ํ์ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ์ ๋ง์ด ์ฌ์ฉ
ํธ๋ฆฌ ๊ด๋ จ ์ฉ์ด
- Node : ํธ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ธฐ๋ณธ ์์(๋ฐ์ดํฐ์ ๋ค๋ฅธ ์ฐ๊ฒฐ๋ ๋ ธ๋์ ๋ํ Branch ์ ๋ณด ํฌํจ)
- Root Node : ํธ๋ฆฌ ๋งจ ์์ ์๋ ๋ ธ๋
- Level : ์ต์์ ๋ ธ๋๋ฅผ Level 0 ์ผ๋ก ํ์ ๋, ํ์ Branch๋ก ์ฐ๊ฒฐ๋ ๋ ธ๋์ ๊น์ด
- Parent Node : ์ด๋ค ๋ ธ๋์ ๋ค์ ๋ ๋ฒจ์ ์ฐ๊ฒฐ๋ ๋ ธ๋
- Child Node : ์ด๋ค ๋ ธ๋์ ์์ ๋ ๋ฒจ์ ์ฐ๊ฒฐ๋ ๋ ธ๋
- Leaf Node(Terminal Node) : Child Node๊ฐ ํ๋๋ ์๋ ๋ ธ๋
- Sibling (Brother Node) : ๋์ผํ Parent Node๋ฅผ ๊ฐ์ง ๋ ธ๋
- Depth : ํธ๋ฆฌ์์ Node๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ Level
์ด์ง ํธ๋ฆฌ & ์ด์ง ํ์ ํธ๋ฆฌ (Binary Search Tree)
- ์ด์ง ํธ๋ฆฌ : ๋ ธ๋์ ์ต๋ Branch๊ฐ 2์ธ ํธ๋ฆฌ
- ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree; BST) : ์ผ์ชฝ ๋
ธ๋๋ ํด๋น ๋
ธ๋๋ณด๋ค ์์ ๊ฐ, ์ค๋ฅธ์ชฝ ๋
ธ๋๋ ํด๋น ๋
ธ๋๋ณด๋ค ํฐ ๊ฐ
- ์ฅ์ : ํ์ ์๋ ๊ฐ์
- ์ฃผ์ ์ฉ๋ : ๋ฐ์ดํฐ ๊ฒ์ (ํ์)
ํ์ด์ฌ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋งํฌ๋ ๋ฆฌ์คํธ ๊ตฌํ
# ๋
ธ๋ ํด๋์ค ๋ง๋ค๊ธฐ
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
- ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ฐ์ดํฐ ๋ฃ๊ธฐ
class NodeMgmt:
def __init__(self, head):
self.head = head
def insert(self, value):
self.current_node = self.head
while True:
if value < self.current_node.value:
if self.current_node.left != None:
self.current_node = self.current_node.left
else:
self.current_node.left = Node(value)
break
else:
if self.current_node.right != None:
self.current_node = self.current_node.right
else:
self.current_node.right = Node(value)
break
head = Node(1)
BST = NodeMgmt(head)
BST.insert(2)
- ์ด์ง ํ์ ํธ๋ฆฌ ํ์
def search(self, value):
self.current_node = self.head
while self.current_node:
if self.current_node.value == value:
return True
elif value < self.current_node.value:
self.current_node = self.current_node.left
else:
self.current_node = self.current_node.right
return False
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Data Structure] ํ (Heap)์ ๊ตฌํ - ํ๊ณผ ๋ฐฐ์ด (1) | 2024.01.30 |
---|---|
[Data Structure] ํ (Heap) (0) | 2024.01.29 |
[Data Structure] hash() ํด์ ํจ์ (1) | 2024.01.29 |
[Data Structure] ์ถฉ๋(Collision) ํด๊ฒฐ ์๊ณ ๋ฆฌ์ฆ : ํด์ ํจ์ (0) | 2024.01.26 |
[Data Structure] ํด์ ํ ์ด๋ธ (Hash Table) (0) | 2024.01.26 |