더북(TheBook)

코드 6-9

    def iter_dfs(self, v):
        """
        시작 정점으로 돌아가
        더 이상 방문할 정점이 없어야 종료
        """
        s = Stack()
        self.init_visited()

        s.push(v)
        # 방문 체크 및 방문
        self.visited[v] = True
        print(v, end=" ")

        # 아직 방문하지 않은 정점을 방문했는가
        is_visited = False

        while not s.empty():
            is_visited = False
            v = s.peek()
            # 인접 리스트를 받아 옵니다.
            adj_v = self.adj_list[v]
            for u in adj_v:
                if not self.visited[u]:
                s.push(u)
                # 방문 체크 및 방문
                self.visited[u] = True
                print(u, end=" ")
                # 아직 방문하지 않은 정점을 방문했으므로
                is_visited = True
                break

        if not is_visited:
            s.pop()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.