实现使用后序遍历深度优先搜索遍历的Python程序

实现使用后序遍历深度优先搜索遍历的Python程序

当需要使用后序遍历深度优先搜索时,可以创建一个树类,并添加元素,对特定元素进行搜索和执行后序遍历等方法。创建该类的实例,即可访问这些方法。

下面是一个示例 −

更多Python相关文章,请阅读: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:
         return self
      for child in self.children:
         temp = child.search_elem(key)
         if temp is not None:
            return temp
      return None

   def postorder_traversal(self):
      for child in self.children:
         child.postorder_traversal()
      print(self.key, end=' ')

my_instance = None

print('菜单(假设没有重复键)')
print('在根节点添加<data>')
print('在<data>下方添加<data>')
print('深度优先搜索')
print('退出')

while True:
   my_input = input('你要执行什么操作?').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
      else:
         position = 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:
            print('没有这个键')
            continue
         ref_node.add_elem(new_node)

   elif operation == 'dfs':
      print('后序遍历结果为:', end='')
      my_instance.postorder_traversal()
      print()

   elif operation == 'quit':
      break

输出结果

菜单(假设没有重复键)
在根节点添加<data>
在<data>下方添加<data>
深度优先搜索
退出
你要执行什么操作?在根添加5
你要执行什么操作?在5下添加9
你要执行什么操作?在9下添加2
你要执行什么操作?dfs
后序遍历结果为:5
你要执行什么操作?quit

解释

  • 创建了’Tree_struct’类并添加了必要的属性。

  • 它具有一个’init’函数,用于创建一个空列表。

  • 它有一个’add_elem’方法,用于帮助将元素添加到树中。

  • 另一个名为’后序遍历(postorder traversal)’的方法执行后序遍历。

  • 定义了一个名为’search_elem’的方法,用于搜索特定元素。

  • 创建一个实例,并将其指派为’None’。

  • 获取用户输入以执行所需操作。

  • 根据用户的选择执行操作。

  • 根据用户的选择,执行操作。

  • 在控制台显示相关输出结果。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程