二叉树的前中后遍历--遍历逻辑

遍历顺序

前序遍历:左右

中序遍历:左

后序遍历:左右

注:遍历的顺序不用刻意去记,根在哪个位置就代表是什么遍历,遍历一般都是先左后右。


遍历规则

以前不是很理解是按什么规则就开始遍历某个节点或者怎么就突然跳到了另一个节点的

最近有些新感悟:

二叉树的 前序遍历中序遍历后序遍历 是三种常见的深度优先遍历(DFS)方法。它们的核心区别在于 访问节点的顺序不同,但它们的查找规则都是基于 深度优先 的原则,即从根节点开始,尽可能深地访问每个分支,直到到达叶子节点,然后再回溯到上一个节点继续遍历。

1. 前序遍历(Preorder Traversal)

查找规则

  1. 访问当前节点(根节点)。
  2. 递归遍历左子树。
  3. 递归遍历右子树。

特点

  • 先访问根节点,再访问左子树和右子树。
  • 适合用于 复制树序列化树

示例
对于以下二叉树:

    1
   / \
  2   3
 / \
4   5

前序遍历的结果是:[1, 2, 4, 5, 3]

查找过程

访问根节点 1

遍历左子树(以 2 为根):

        访问节点 2

        遍历左子树(以 4 为根):

                访问节点 4

        遍历右子树(以 5 为根):

                访问节点 5

遍历右子树(以 3 为根):

        访问节点 3


2. 中序遍历(Inorder Traversal)

查找规则

  1. 递归遍历左子树。
  2. 访问当前节点(根节点)。
  3. 递归遍历右子树。

特点

  • 先访问左子树,再访问根节点,最后访问右子树。
  • 对于 二叉搜索树(BST),中序遍历的结果是一个 升序序列

示例
对于以下二叉树:

    1
   / \
  2   3
 / \
4   5

中序遍历的结果是:[4, 2, 5, 1, 3]

查找过程

遍历左子树(以 2 为根):

        遍历左子树(以 4 为根):

                访问节点 4

        访问节点 2

        遍历右子树(以 5 为根):

                访问节点 5

访问根节点 1

遍历右子树(以 3 为根):

        访问节点 3


3. 后序遍历(Postorder Traversal)

查找规则

  1. 递归遍历左子树。
  2. 递归遍历右子树。
  3. 访问当前节点(根节点)。

特点

  • 先访问左子树和右子树,最后访问根节点。
  • 适合用于 删除树计算表达式树

示例
对于以下二叉树:

    1
   / \
  2   3
 / \
4   5

后序遍历的结果是:[4, 5, 2, 3, 1]

查找过程

遍历左子树(以 2 为根):

        遍历左子树(以 4 为根):

                访问节点 4

        遍历右子树(以 5 为根):

                访问节点 5

        访问节点 2

遍历右子树(以 3 为根):

        访问节点 3

访问根节点 1


查找规则总结

遍历方式

查找规则

访问顺序

适用场景

前序遍历

根 -> 左 -> 右

根节点 -> 左子树 -> 右子树

复制树、序列化树

中序遍历

左 -> 根 -> 右

左子树 -> 根节点 -> 右子树

二叉搜索树的升序输出

后序遍历

左 -> 右 -> 根

左子树 -> 右子树 -> 根节点

删除树、计算表达式树


示例二叉树

      1
     / \
    2   3
   / \
  4   5
  • 前序遍历1, 2, 4, 5, 3
  • 中序遍历4, 2, 5, 1, 3
  • 后序遍历4, 5, 2, 3, 1

总结

  • 前序遍历:先访问根节点,再访问左子树和右子树。
  • 中序遍历:先访问左子树,再访问根节点,最后访问右子树。
  • 后序遍历:先访问左子树和右子树,最后访问根节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值