더북(TheBook)


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). 이진 트리 클래스에서 트리 노드의 멤버에 값을 참조하거나 변경할 때 멤버에 바로 접근하는 것처럼 보이지만 사실은 메서드로 접근하는 것입니다.

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