그림 9-11을 보면 모든 외부 노드를 하나의 객체로 표현했습니다. 이제 실제 코드로 구현합시다.
코드 9-2
class RedBlackTree:
def __init__(self):
self.__root = None
# 모든 외부 노드를 하나의 객체로 표현
self.__EXT = RBNode(None)
# 외부 노드의 컬러는 블랙
self.__EXT.color = "BLACK"
def get_root(self):
return self.__root
def preorder_traverse(self, cur, func, *args, **kwargs):
if cur == self.__EXT:
return
func(cur, *args, **kwargs)
self.preorder_traverse(cur.left, func, *args, **kwargs)
self.preorder_traverse(cur.right, func, *args, **kwargs)
코드 9-2에서 생성자를 보면 __EXT라는 멤버를 두어 RBNode 인스턴스 하나를 참조하도록 했습니다. 이 멤버가 모든 외부 노드를 표현합니다. 외부 노드의 컬러는 BLACK이므로 컬러를 바꾸어 줍니다.