Problem Solving/Data Structure

[자료구조] #7_2 트리

se0m 2021. 5. 30. 22:56

** 파이썬 객체지향 프로그래밍으로 트리 구현

---> 삽입, 탐색, (삭제)


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