3.1트리 노드 구현


    먼저 이진 트리를 구성하는 트리 노드의 클래스부터 만들겠습니다. 트리 노드 클래스는 멤버가 세 개입니다. 데이터를 담는 __data, 왼쪽 자식 노드를 가리키는 __left, 오른쪽 자식 노드를 가리키는 __right입니다.

    코드 13-5 data_structure_2/ds_3/binary_tree.py ① (TreeNode 클래스)

    class TreeNode:
           def __init__(self):
               self.__data = None
               self.__left = None
               self.__right = None
           # 노드 삭제를 확인하기 위한 소멸자
           # 객체가 삭제되기 전에 호출된다
           def __del__(self):
               print("TreeNode of {} is deleted".format(self.data))
    
           @property
           def data(self):        #1
               return self.__data
    
           @data.setter         #2
           def data(self, data):
               self.__data = data
    
           @property
           def left(self):          #3
               return self.__left
    
           @left.setter
           def left(self, left):           #4
               self.__left = left
    
           @property
           def right(self):                #5
               return self.__right
    
           @right.setter
           def right(self, right):      #6
               self.__right = right
    


    프로퍼티 기법을 사용하여 트리 노드의 세 멤버(__data, __left, __right)를 캡슐화하였습니다(#1~#6). 이진 트리 클래스에서 트리 노드의 멤버에 값을 참조하거나 변경할 때 멤버에 바로 접근하는 것처럼 보이지만 사실은 메서드로 접근하는 것입니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.