news 2026/10/22 13:37:59

二叉树的前序、中序、后序遍历分别是什么?各自有什么应用场景?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二叉树的前序、中序、后序遍历分别是什么?各自有什么应用场景?

二叉树的前序、中序、后序遍历是三种经典的深度优先遍历(DFS)方式,它们的区别仅在于访问根节点的时机不同。下面用一张表+详细说明帮你彻底搞懂:


📊 一、核心定义对比

表格

遍历类型访问顺序口诀根节点位置
前序遍历根 → 左子树 → 右子树根左右最先
中序遍历左子树 → 根 → 右子树左根右中间
后序遍历左子树 → 右子树 → 根左右根最后

✅ 共同点:

  • 都是递归结构(每个子树都按相同规则处理)
  • 时间复杂度:O(n)(每个节点访问一次)
  • 空间复杂度:O(h)(h = 树高,递归栈或显式栈的深度)

🌰 二、举例说明(同一棵树)

以这棵二叉树为例:

A / \ B C / \ \ D E F

表格

遍历类型遍历结果过程简述
前序A → B → D → E → C → F先记根A,再钻左子树(B→D→E),最后右子树(C→F)
中序D → B → E → A → C → F先钻到最左(D),回溯记B,再右(E),回溯记A,再处理右子树(C→F)
后序D → E → B → F → C → A先处理完左右子树(D,E,B 和 F,C),最后记根A

⚙️ 三、各自优点与典型应用场景

1.前序遍历(Pre-order)
  • 优点:
    • 先处理根节点,适合需要“自顶向下”操作的场景
    • 结构清晰,易于序列化/反序列化
  • 典型应用:
    ✅复制二叉树(先创建根,再递归复制左右子树)
    ✅树的序列化(如 LeetCode 的[1,2,3,null,null,4,5]格式)
    ✅表达式树 → 前缀表达式(如+ 1 * 2 3)
    ✅目录结构导出(先输出父文件夹,再子文件夹)
2.中序遍历(In-order)
  • 优点:
    • 对二叉搜索树(BST)天然有序!
    • 能反映“左 < 根 < 右”的逻辑顺序
  • 典型应用:
    ✅BST 升序输出(验证 BST、找第 K 小元素)
    ✅表达式树 → 中缀表达式(如(1 + (2 * 3)),需加括号)
    ✅数据库索引遍历(B+树的中序即有序数据)
    ✅DOM 树节点顺序访问(前端开发)
3.后序遍历(Post-order)
  • 优点:
    • 先处理子节点,再处理根节点,适合“自底向上”计算
    • 安全释放资源(子节点先销毁)
  • 典型应用:
    ✅删除二叉树(先删左右子树,再删根,避免悬空指针)
    ✅计算目录大小(先算子目录大小,再累加到父目录)
    ✅表达式树 → 后缀表达式(逆波兰)(如1 2 3 * +)
    ✅编译器语法分析(先处理子表达式,再处理运算符)

💡 四、如何选择?

需求场景推荐遍历
需要先知道根节点信息前序
处理 BST 或需要有序结果中序
需要子节点结果才能处理根节点后序

🛠 五、代码模板(Python 递归)

# 前序遍历 def preorder(root): if not root: return [] return [root.val] + preorder(root.left) + preorder(root.right) # 中序遍历 def inorder(root): if not root: return [] return inorder(root.left) + [root.val] + inorder(root.right) # 后序遍历 def postorder(root): if not root: return [] return postorder(root.left) + postorder(root.right) + [root.val]

✅ 总结一句话:

  • 前序:做事先定调(先处理根)→ 用于复制、序列化
  • 中序:做事讲顺序(左根右)→ 用于排序、表达式
  • 后序:做事收尾好(后处理根)→ 用于删除、计算

掌握这三种遍历的本质区别和应用场景,就掌握了二叉树操作的“任督二脉”! 🌟

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 18:04:10

前端效率翻倍!Open-Lovable 克隆网页超实用,搭配 cpolar 远程用更香

Open-Lovable 是一款面向前端开发者的开源工具&#xff0c;核心功能是将任意网页克隆为可编辑的 React 应用&#xff0c;还支持多类 AI 模型辅助生成代码&#xff0c;能自动拆分组件、保留完整 CSS 样式&#xff0c;不管是新手学习网页结构&#xff0c;还是创业团队快速制作产品…

作者头像 李华
网站建设 2026/10/19 9:30:08

【避坑指南】langchain模块结构兼容性问题导致的模块引入错误解析

本文介绍当前最流行的langchain在新手使用过程中的一些典型问题&#xff0c;因langchain在0.1.0版本后有几次较大规模的重构&#xff0c;产生较多模块版本不兼容、经常会遇到在引入模块时发生错误&#xff0c;本文针对这类问题做了langchain结构的分析&#xff0c;帮大家避坑&a…

作者头像 李华
网站建设 2026/10/19 9:30:08

GEO服务商榜单

原圈科技如何领跑AI营销 破解获客难题&#xff1f;技术底座 行业知识 端到端方案核心洞察 | 原圈科技GEO服务深度解析&#xff1a;作为2026年榜单的领跑者&#xff0c;原圈科技凭借其"技术底座行业知识端到端方案"三位一体的核心能力脱颖而出。其通过"天眼&qu…

作者头像 李华
网站建设 2026/10/19 9:24:37

国产DevSecOps工具崛起:安全左移战略下的技术创新与市场重构

国产DevSecOps工具崛起&#xff1a;安全左移战略下的技术创新与市场重构 随着数字化转型进入深水区&#xff0c;软件开发的安全需求正在发生根本性变革。Gartner最新预测显示&#xff0c;到2025年中国DevSecOps工具市场将突破78亿元规模&#xff0c;年复合增长率高达42%&#x…

作者头像 李华
网站建设 2026/10/19 12:26:53

卫星通信-145页.pptx

关注、星标公众号&#xff0c;精彩内容每日送达 来源&#xff1a;网络素材&#xff08;全文完&#xff09;声明&#xff1a;我们尊重原创&#xff0c;也注重分享&#xff1b;文字、图片版权归原作者所有。转载目的在于分享更多信息&#xff0c;不代表本号立场&#xff0c;如有侵…

作者头像 李华
网站建设 2026/10/17 7:34:40

(3-1)机器人身体结构与人体仿生学:人体生物力学与关节分析

本章内容围绕人形机器人身体结构与人体仿生学展开&#xff0c;系统分析了人体生物力学特征及其对机器人结构设计的指导意义。首先从关节自由度、运动范围与扭矩需求入手&#xff0c;结合力臂与质量分布&#xff0c;阐明人体动态平衡的力学基础&#xff1b;随后重点介绍了人形机…

作者头像 李华