构建二叉树:使用中序或后序遍历作为输入的Python程序

构建二叉树:使用中序或后序遍历作为输入的Python程序

当需要通过使用中序或后序遍历输入来构建二叉树时,定义一个类,该类具有设置根元素,执行中序遍历,执行后续遍历的方法。可以通过创建该类的实例来使用它。

以下是相同操作的演示 −

更多Python相关文章,请阅读:Python 教程

示例

class BinaryTree_struct:
   def __init__(self, key=None):
      self.key = key
      self.left = None
      self.right = None

   def set_root(self, key):
      self.key = key

   def inorder_traversal(self):
      if self.left is not None:
         self.left.inorder_traversal()
      print(self.key, end=' ')
      if self.right is not None:
         self.right.inorder_traversal()

   def post_order_traversal(self):
      if self.left is not None:
         self.left.post_order_traversal()
      if self.right is not None:
         self.right.post_order_traversal()
      print(self.key, end=' ')

def construct_btree(post_ord, in_ord):
   if post_ord == [] or in_ord == []:
      return None
   key = post_ord[-1]
   node = BinaryTree_struct(key)
   index = in_ord.index(key)
   node.left = construct_btree(post_ord[:index], in_ord[:index])
   node.right = construct_btree(post_ord[index:-1], in_ord[index + 1:])
   return node

post_ord = input('The input for post-order traversal is : ').split()
post_ord = [int(x) for x in post_ord]
in_ord = input('The input for in-order traversal is : ').split()
in_ord = [int(x) for x in in_ord]

my_instance = construct_btree(post_ord, in_ord)
print('Binary tree has been constructed...')
print('Verification in process..')
print('Post-order traversal is... ', end='')
my_instance.post_order_traversal()
print()
print('In-order traversal is... ', end='')
my_instance.inorder_traversal()
print()

输出

The input for post-order traversal is : 1 2 3 4 5
The input for in-order traversal is : 5 4 3 2 1
Binary tree has been constructed...
Verification in process..
Post-order traversal is... 1 2 3 4 5
In-order traversal is... 5 4 3 2 1

解释

  • 创建了“BinaryTree_struct”类及所需属性。

  • 它有一个“init”函数,用于将左和右节点设置为“None”。

  • 它有一个“set_root”方法,用于设置二叉树的根。

  • 另一个名为‘inorder_traversal’的方法,用于执行中序遍历,即左→节点→右。

  • 定义了另一个方法‘post_order_traversal’,该方法帮助遍历树中的后序,即左→右→节点。

  • 定义了一个名为‘construct_btree’的方法,该方法使用先前指定的元素帮助构建二叉树。

  • 定义了一个名为‘search_elem’的方法,该方法帮助搜索特定元素。

  • 创建了“BinaryTree_struct”类的对象。

  • 使用‘construct_btree’方法通过使用先前指定的元素构建二叉树。

  • 在此树上执行后续遍历和中序遍历。

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程