📜  一次遍历中二叉树的前序、后序和按序遍历 | (使用递归)(1)

📅  最后修改于: 2023-12-03 15:21:26.701000             🧑  作者: Mango

一次遍历中二叉树的前序、后序和按序遍历 | (使用递归)

二叉树是一种常见的数据结构,其遍历方式有三种:前序遍历、中序遍历和后序遍历,在这篇文章中,我们将探讨如何使用递归实现一次遍历中二叉树的前序、后序和按序遍历。

前序遍历

前序遍历按照“根节点-左子树-右子树”的顺序遍历二叉树,具体过程如下:

  1. 访问根节点
  2. 前序遍历左子树
  3. 前序遍历右子树

使用递归实现前序遍历十分简单,具体代码如下:

def preorder_traversal(root):
    if not root:
        return
    print(root.val)  # 访问根节点
    preorder_traversal(root.left)  # 前序遍历左子树
    preorder_traversal(root.right)  # 前序遍历右子树
后序遍历

后序遍历按照“左子树-右子树-根节点”的顺序遍历二叉树,具体过程如下:

  1. 后序遍历左子树
  2. 后序遍历右子树
  3. 访问根节点

同样,使用递归实现后序遍历也很容易,具体代码如下:

def postorder_traversal(root):
    if not root:
        return
    postorder_traversal(root.left)  # 后序遍历左子树
    postorder_traversal(root.right)  # 后序遍历右子树
    print(root.val)  # 访问根节点
按序遍历

按序遍历按照“左子树-根节点-右子树”的顺序遍历二叉树,具体过程如下:

  1. 按序遍历左子树
  2. 访问根节点
  3. 按序遍历右子树

同样,使用递归实现按序遍历也很容易,具体代码如下:

def inorder_traversal(root):
    if not root:
        return
    inorder_traversal(root.left)  # 按序遍历左子树
    print(root.val)  # 访问根节点
    inorder_traversal(root.right)  # 按序遍历右子树

通过以上代码,我们可以用递归实现一次遍历中二叉树的前序、后序和按序遍历。