Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Post Order를 사용하여 Depth First Search Traversal을 구현하는 Python 프로그램

<시간/>

후위 순회를 이용하여 깊이 우선 탐색을 구현해야 하는 경우 요소 추가, 특정 요소 검색, 후위 순회 등을 수행하는 메소드로 트리 클래스가 생성됩니다. 클래스의 인스턴스가 생성되고 메서드에 액세스하는 데 사용할 수 있습니다.

아래는 동일한 데모입니다 -

예시

class Tree_Struct:def __init__(self, key=None):self.key =key self.children =[] def add_elem(self, node):self.children.append(node) def search_elem(self, key) :if self.key ==key:self.children의 자식에 대해 self를 반환:temp =child.search_elem(key) temp가 아닌 경우 None:반환 임시 return None def postorder_traversal(self):self.children의 자식에 대해:자식 .postorder_traversal() print(self.key, end=' ')my_instance =Noneprint('메뉴(이것은 중복 키가 없다고 가정)')print('루트에 <데이터> 추가')print('아래에 <데이터> 추가 ')print('dfs')print('quit')while True:my_input =input('어떤 작업을 수행하시겠습니까? ').split() 작업 =my_input[0].strip().lower() if 작업 =='추가':데이터 =int(my_input[1]) new_node =Tree_Struct(data) 하위 작업 =my_input[2].strip().lower() if 하위 작업 =='at':my_instance =new_node else:위치 =내_ input[3].strip().lower() key =int(position) ref_node =my_instance가 아닌 경우 None:ref_node =my_instance.search_elem(key) ref_node가 None인 경우:print('해당 키가 없습니다') 계속 ref_node.add_elem(new_node) elif 작업 =='dfs':print('후위 순회는 ', end='') my_instance.postorder_traversal() print() elif 작업 =='종료':중단 

출력

메뉴(중복 키가 없다고 가정)루트에 <데이터>를 추가 <데이터>아래에 <데이터>를 추가하십시오.dfsquit무슨 작업을 하시겠습니까? 루트에 5를 추가하시겠습니까? 아래에 9를 입력하세요. 5어떤 작업을 하시겠습니까? 아래에 2를 입력하세요. 9어떤 작업을 하시겠습니까? dfs후위 순회는 다음과 같습니다. 5어떤 작업을 수행하시겠습니까? 종료

설명

  • 필수 속성을 가진 'Tree_struct' 클래스가 생성됩니다.

  • 빈 목록을 만드는 데 사용되는 '초기화' 기능이 있습니다.

  • 트리에 요소를 추가하는 데 도움이 되는 'add_elem' 메서드가 있습니다.

  • 후위 순회를 수행하는 'postorder_traversal'이라는 또 다른 메서드입니다.

  • 특정 요소를 검색하는 데 도움이 되는 'search_elem'이라는 메서드가 정의되어 있습니다.

  • 인스턴스가 생성되어 '없음'으로 지정됩니다.

  • 수행해야 하는 작업에 대해 사용자 입력을 받습니다.

  • 사용자의 선택에 따라 작업이 수행됩니다.

  • 관련 출력이 콘솔에 표시됩니다.