이제 재귀 함수를 이용해 각 순회를 구현해 볼까요?

    코드 13-10 data_structure_2/ds_3/binary_tree.py ⑥ (BinaryTree 클래스 ③)

        # 전위 순회로 트리를 순회
        # 인자(cur: 방문 노드, func: 데이터 처리 함수)
        def preorder_traverse(self, cur, func):
            # 탈출 조건
            # 방문한 노드가 빈 노드일 때
            if not cur:
                return
    
            # 먼저 방문 노드의 데이터를 인자로 함수 호출
            func(cur.data)
            # 왼쪽 서브 트리 순회
            self.preorder_traverse(cur.left, func)
            # 오른쪽 서브 트리 순회
            self.preorder_traverse(cur.right, func)
    
        # 중위 순회로 트리를 순회
        # 인자(cur: 방문 노드, func: 데이터 처리 함수)
        def inorder_traverse(self, cur, func):
            # 탈출 조건
            if not cur:
                return
    
            # 먼저 왼쪽 서브 트리를 순회
            self.inorder_traverse(cur.left, func)
            # 왼쪽 서브 트리를 모두 순회한 후
            # 방문 노드의 데이터를 인자로 함수 호출
            func(cur.data)
            # 오른쪽 서브 트리 순회
            self.inorder_traverse(cur.right, func)
    
        # 후위 순회로 트리를 순회
        # 인자(cur: 방문 노드, func: 데이터 처리 함수)
        def postorder_traverse(self, cur, func):
            # 탈출 조건
            if not cur:
                return
    
            # 왼쪽 서브 트리 순회
            self.postorder_traverse(cur.left, func)
            # 오른쪽 서브 트리 순회
            self.postorder_traverse(cur.right, func)
            # 왼쪽 서브 트리와 오른쪽 서브 트리를 모두 순회한 후
            # 마지막으로 방문 노드의 데이터를 인자로 함수 호출
            func(cur.data)
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.