Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python เพื่อใช้งาน Depth First Search Traversal โดยใช้ Post Order


เมื่อจำเป็นต้องดำเนินการค้นหาเชิงลึกก่อนโดยใช้การข้ามผ่านคำสั่งซื้อภายหลัง คลาสต้นไม้จะถูกสร้างขึ้นด้วยวิธีการเพิ่มองค์ประกอบ ค้นหาองค์ประกอบเฉพาะ และดำเนินการตามคำสั่งผ่านรายการ เป็นต้น มีการสร้างอินสแตนซ์ของคลาส และสามารถใช้เพื่อเข้าถึงเมธอดได้

ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -

ตัวอย่าง

คลาส 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 ==คีย์:return self สำหรับ child ใน self.children:temp =child.search_elem(key) ถ้า temp ไม่ใช่ None:return temp return ไม่มี def postorder_traversal(self):สำหรับเด็กใน self.children:child .postorder_traversal() print(self.key, end=' ' ')my_instance =Noneprint('เมนู (ถือว่าไม่มีคีย์ที่ซ้ำกัน)')print('add  at root')print('add  below ')print('dfs')print('quit') while True:my_input =input('What operation you do ? ').split() operation =my_input[0].strip().lower() if operation =='add':data =int(my_input[1]) new_node =Tree_Struct(data) suboperation =my_input[2].strip().lower() if suboperation =='at':my_instance =new_node อื่น:ตำแหน่ง =my_ input[3].strip().lower() key =int(position) ref_node =None if my_instance is not none:ref_node =my_instance.search_elem(key) if ref_node is None:พิมพ์ ('ไม่มีคีย์ดังกล่าว') ดำเนินการต่อ ref_node.add_elem(new_node) การดำเนินการ elif =='dfs':print('การข้ามผ่านคำสั่งภายหลังคือ:', end='') my_instance.postorder_traversal() print() การดำเนินการ elif =='เลิก':แตก 

ผลลัพธ์

เมนู (ถือว่าไม่มีคีย์ที่ซ้ำกัน) เพิ่ม  ที่ rootadd  ด้านล่าง dfsquit คุณจะทำอย่างไร เพิ่ม 5 ที่ root คุณจะทำอย่างไร? แทรก 9 ด้านล่าง 5 คุณจะทำอะไร? แทรก 2 ด้านล่าง 9 คุณจะทำอย่างไร? dfsการข้ามผ่านภายหลังคือ:5คุณจะทำอย่างไร ? ลาออก

คำอธิบาย

  • สร้างคลาส 'Tree_struct' พร้อมแอตทริบิวต์ที่จำเป็นแล้ว

  • มีฟังก์ชัน 'init' ที่ใช้สร้างรายการว่าง

  • มันมีวิธีการ 'add_elem' ที่ช่วยเพิ่มองค์ประกอบให้กับต้นไม้

  • อีกวิธีหนึ่งที่ชื่อว่า 'postorder_traversal' ซึ่งทำการข้ามผ่านภายหลัง

  • มีการกำหนดเมธอดที่ชื่อว่า "search_elem" ซึ่งช่วยในการค้นหาองค์ประกอบเฉพาะ

  • มีการสร้างและกำหนดอินสแตนซ์ให้กับ "ไม่มี"

  • ผู้ใช้ป้อนข้อมูลสำหรับการดำเนินการที่จำเป็นต้องดำเนินการ

  • ขึ้นอยู่กับทางเลือกของผู้ใช้ การดำเนินการจะดำเนินการ

  • เอาต์พุตที่เกี่ยวข้องจะแสดงบนคอนโซล