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

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

在计算机科学中,二叉树是常见的数据结构,可以用来储存有关键字的数据。二叉树的节点可以储存数据,也可以指向子节点,形成树状结构。本文将介绍如何使用中序或后序遍历来构建二叉树的Python程序。

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

中序遍历

中序遍历是先访问左子树,然后访问根节点,最后访问右子树的遍历方式。对于以下二叉树:

      1
    /   \
   2     3
  / \   / \
 4   5 6   7

中序遍历为4 2 5 1 6 3 7

我们可以使用如下的Python代码来构建中序遍历的二叉树:

class TreeNode(object):
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def buildTreeInorder(inorder):
    if not inorder: return None
    mid = len(inorder) // 2
    root = TreeNode(inorder[mid])
    root.left = buildTreeInorder(inorder[:mid])
    root.right = buildTreeInorder(inorder[mid+1:])
    return root

inorder = [4, 2, 5, 1, 6, 3, 7]
root = buildTreeInorder(inorder)

在这个例子中,我们定义了一个TreeNode类来创建二叉树的节点,然后定义了一个buildTreeInorder函数来构建二叉树。我们将中序遍历作为输入,然后将中间的节点作为根节点构造二叉树,递归构建左右子树即可。最后返回根节点。

后序遍历

后序遍历是先访问左子树,然后访问右子树,最后访问根节点的遍历方式。对于以下二叉树:

      1
    /   \
   2     3
  / \   / \
 4   5 6   7

后序遍历为4 5 2 6 7 3 1

我们可以使用如下的Python代码来构建后序遍历的二叉树:

class TreeNode(object):
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def buildTreePostorder(postorder):
    if not postorder: return None
    root = TreeNode(postorder[-1])
    mid = postorder.index(root.val)
    root.left = buildTreePostorder(postorder[:mid])
    root.right = buildTreePostorder(postorder[mid:-1])
    return root

postorder = [4, 5, 2, 6, 7, 3, 1]
root = buildTreePostorder(postorder)

在这个例子中,我们同样定义了一个TreeNode类来创建二叉树的节点,然后定义了一个buildTreePostorder函数来构建二叉树。我们将后序遍历作为输入,然后将最后一个节点作为根节点构造二叉树,递归构建左右子树即可。

结论

以上就是使用中序或后序遍历作为输入的Python程序来构建二叉树。构建二叉树是二叉树算法中非常基础的内容,掌握这个方法对于日后的算法学习会很有帮助。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程