二叉树的先中后序遍历(递归版)

二叉树结构

const binaryTree = {
    val: 1,
    left: {
        val: 2,
        left: {
            val: 4,
        },
        right: {
            val: 5,
        }
    },
    right: {
        val: 3,
        left: {
            val: 6,
            left: {
                val: 8
            }
        },
        right: {
            val: 7,
        }
    }
}

二叉树的先中后序遍历(递归版)_第1张图片
1、先序遍历

  1. 访问节点
  2. 对根节点的子树进行先序遍历
  3. 对根节点的子树进行先序遍历
const preorder = (root) => {
    if (!root) return
    console.log(root.val) // 访问根节点
    preorder(root.left) // 先序遍历根节点的左子树
    preorder(root.right) // 先序遍历根节点的右子树
}

preorder(binaryTree)

二叉树的先中后序遍历(递归版)_第2张图片

2、中序遍历

  1. 对根节点的子树进行中序遍历
  2. 访问节点
  3. 对根节点的子树进行中序遍历
const inorder = (root) => {
    if (!root) return
    inorder(root.left) // 中序遍历左子树
    console.log(root.val) // 访问根节点
    inorder(root.right) // 中序遍历右子树
}

inorder(binaryTree)

二叉树的先中后序遍历(递归版)_第3张图片

3、后序遍历

  1. 对根节点的子树进行后序遍历
  2. 对根节点的子树进行后序遍历
  3. 访问节点
const postorder = (root) => {
    if (!root) return
    postorder(root.left) // 后序遍历左子树
    postorder(root.right) // 后序遍历右子树
    console.log(root.val) // 访问根节点
}

postorder(binaryTree)

二叉树的先中后序遍历(递归版)_第4张图片

你可能感兴趣的:(二叉树的先中后序遍历(递归版))