[자료구조] #7_2 트리
** 파이썬 객체지향 프로그래밍으로 트리 구현
---> 삽입, 탐색, (삭제)
1) 노드 클래스 구현
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
2) 이진 탐색 트리 구현
class BinarySearchTree:
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
# 탐색
def search(self, value):
self.current_node = self.head
# 탐색 진행
while self.current_node:
if self.current_node.value == value: # 탐색 성공
return True
elif self.current_node.value > value:
self.current_node = self.current_node.left # 이동
else:
self.current_node = self.current_node.right # 이동
# 전체 탐색 끝, 탐색 대상 존재하지 않음
return False