• Python算法——二叉树遍历


    Python中的二叉树遍历算法详解

    二叉树是一种常见的树状数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。遍历二叉树是访问树的所有节点并按照特定顺序输出它们的过程。在本文中,我们将讨论二叉树的三种主要遍历算法:前序遍历、中序遍历和后序遍历,并提供相应的Python代码实现。

    1. 前序遍历(Preorder Traversal)

    前序遍历按照“根-左-右”的顺序访问二叉树节点。具体步骤如下:

    1. 访问根节点。
    2. 对根节点的左子树进行前序遍历。
    3. 对根节点的右子树进行前序遍历。
      以下是前序遍历的Python实现:
    class TreeNode:
        def __init__(self, value):
            self.val = value
            self.left = None
            self.right = None
    
    def preorder_traversal(root):
        if root is not None:
            print(root.val, end=" ")  # 访问根节点
            preorder_traversal(root.left)  # 对左子树进行前序遍历
            preorder_traversal(root.right)  # 对右子树进行前序遍历
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2. 中序遍历(Inorder Traversal)

    中序遍历按照“左-根-右”的顺序访问二叉树节点。具体步骤如下:

    1. 对根节点的左子树进行中序遍历。
    2. 访问根节点。
    3. 对根节点的右子树进行中序遍历。
      以下是中序遍历的Python实现:
    def inorder_traversal(root):
        if root is not None:
            inorder_traversal(root.left)  # 对左子树进行中序遍历
            print(root.val, end=" ")  # 访问根节点
            inorder_traversal(root.right)  # 对右子树进行中序遍历
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3. 后序遍历(Postorder Traversal)

    后序遍历按照“左-右-根”的顺序访问二叉树节点。具体步骤如下:

    1. 对根节点的左子树进行后序遍历。
    2. 对根节点的右子树进行后序遍历。
    3. 访问根节点。
      以下是后序遍历的Python实现:

    def postorder_traversal(root):
    if root is not None:
    postorder_traversal(root.left) # 对左子树进行后序遍历
    postorder_traversal(root.right) # 对右子树进行后序遍历
    print(root.val, end=" ") # 访问根节点

    示例

    考虑以下二叉树:

        1
       / \
      2   3
     / \
    4   5
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建二叉树:

    root = TreeNode(1)
    root.left = TreeNode(2)
    root.right = TreeNode(3)
    root.left.left = TreeNode(4)
    root.left.right = TreeNode(5)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    分别使用前序、中序和后序遍历输出:

    print("前序遍历:", end=" ")
    preorder_traversal(root)
    
    print("\n中序遍历:", end=" ")
    inorder_traversal(root)
    
    print("\n后序遍历:", end=" ")
    postorder_traversal(root)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出结果为:

    前序遍历: 1 2 4 5 3 
    中序遍历: 4 2 5 1 3 
    后序遍历: 4 5 2 3 1
    
    • 1
    • 2
    • 3

    这些遍历算法是在不同情况下解决二叉树问题时非常有用的工具。了解它们的工作原理,并能够实现相应的算法,有助于深入理解树结构的特性。

  • 相关阅读:
    Nuttx Syscall
    Lua-掌握Lua语言基础1
    React路由(含新老版对比)
    03_Java数组与方法
    CSS 中几种常用的换行方法
    XMLHttpRequest的基本使用
    nvm下载安装
    flink学习知识点小结
    9.2.5 TIMESTAMP类型
    深入探索JVM高效并发 — Java内存模型(二)
  • 原文地址:https://blog.csdn.net/weixin_46178278/article/details/134328759