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