728x90
반응형
이진 트리(Binary Tree)는 각 노드가 최대 두 개의 자식 노드를 갖는 트리 자료구조입니다. 이진 트리는 컴퓨터 과학 분야에서 널리 사용되며, 예를 들어 검색 트리, 힙(Heap), 트라이(Trie) 등을 구현하는 데 사용됩니다.
이진 트리를 파이썬으로 구현하는 방법은 여러 가지가 있지만, 가장 기본적인 방법은 노드 클래스와 트리 클래스를 따로 정의하는 것입니다. 각 노드는 자신의 값(value)과 왼쪽 자식 노드(left)와 오른쪽 자식 노드(right)를 갖습니다. 트리 클래스는 루트 노드(root)를 갖습니다.
아래는 이진 트리를 파이썬으로 구현하는 예시 코드입니다.
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BinaryTree:
def __init__(self, root_value):
self.root = Node(root_value)
def insert_left(self, parent_node, new_node_value):
if parent_node.left is None:
parent_node.left = Node(new_node_value)
else:
new_node = Node(new_node_value)
new_node.left = parent_node.left
parent_node.left = new_node
def insert_right(self, parent_node, new_node_value):
if parent_node.right is None:
parent_node.right = Node(new_node_value)
else:
new_node = Node(new_node_value)
new_node.right = parent_node.right
parent_node.right = new_node
위 코드에서 Node 클래스는 이진 트리의 노드를 나타내며, BinaryTree 클래스는 이진 트리를 나타냅니다. BinaryTree 클래스는 루트 노드를 초기화하는 생성자(init)와 노드를 삽입하는 insert_left와 insert_right 메서드를 포함합니다.
insert_left와 insert_right 메서드는 각각 부모 노드(parent_node)와 새로운 노드의 값(new_node_value)을 인자로 받습니다. 만약 부모 노드의 왼쪽 또는 오른쪽 자식 노드가 비어있다면, 새로운 노드를 삽입합니다. 그렇지 않다면, 새로운 노드를 부모 노드의 왼쪽 또는 오른쪽 자식 노드로 삽입합니다.
728x90
'알고리즘 > 알고리즘 이론' 카테고리의 다른 글
[알고리즘이론] 오일러 회로(Euler circuit) 파이썬으로 구현하기 (0) | 2023.04.06 |
---|---|
[알고리즘이론] 다익스트라(Dijkstra) 파이썬으로 구현하기 (0) | 2023.04.01 |
[알고리즘이론] 우선순위 큐(Priority Queue) 파이썬으로 구현하기 (0) | 2023.03.30 |
[알고리즘이론] 슬라이딩 윈도우(Sliding Window) 파이썬으로 구현하기 (0) | 2023.03.29 |
[알고리즘이론] 해밀턴 경로(Hamiltonian path) 파이썬으로 구현하기 (0) | 2023.03.28 |