96SEO 2026-08-06 18:13 24
老实说,
很多前端同学一听到「树」「二叉树」就头大觉得这是后端或算法岗才需要掌握的东西。但,DOM 树、组件树、路由树、抽象语法树…,树结构在前端无处不在。
这篇文章会用最通俗的语言,带你从零掌握树的主要概念和四种遍历方式。并附上可直接运行的 JavaScript 代码,让你在面试和实际项目中不再慌张。

数据结构的「树」本质是对现实世界「树」的一层抽象:
现实世界的树 数据结构的树
树根 ─────► 根节点
树枝 ─────► 边
树枝两端 ─────► 节点
树叶 ─────► 叶子节点
关键区别:数据结构中的树是倒着画的——根在最上面叶子在最下面这更符合我们阅读「从根向下展开」的习惯。按理说,
二叉树的定义非常优雅。它是递归定义的:
这就是递归思想的主要——用二叉树去定义二叉树
很多教材会说二叉树是「每个节点最多有两个子节点的普通有序树」,但这不严谨。二叉树和度为 2 的普通有序树有本质区别:
A 为例,用图直观说明:
a) 度为 0 的节点 → 没有子节点 → **叶子节点**;b) 度为 1 的节点 → 只有左或右子节点;c) 度为 2 的节点 → 同时拥有左、右子节点。
*Degree == 0* 的节点即为叶子。它们位于整棵 tree 的末端,不再向下延伸。
Simplest representation – “三件套”:
You can also build a tree directly with an object literal:
The visual shape:
The traversals split into two families:
典型应用:
Critical scenario: 对**二叉搜索数**进行中序遍历。你会得到一个**升序**数组——因为 BST 本身满足 “左 <根 <右”。这也是检验一棵 BST 正确性的最快方法。
Common uses:
Cases where you’ll reach for level‑order:
为什么不能用「度为 2 的树」来定义?
三、Tree 的主要概念
层次 ⚡️痛点:经常把层次和深度混淆!
A
/ \
B C ← 第 2 层
/ \ / \
D E F G ← 第 3 层
高度与深度 ⚡️痛点:两者容易颠倒!按理说,
深度 = 从根到该节点经过的边数
高度 = 从该节点到最远叶子经过的边数
例:
A
/ \
B C
/ \ / \
D E F G
深度=0。深度=1,深度=2 ...
高度=0,高度=max+1=1,高度=max+1=3
度 ⚡️痛点:经常把「度」当成「层级」误用!
叶子节点 ⚡️痛点:判断是否为叶子时忘记检查 both left/right 为 null!
四、JavaScript 中如何表示二叉树?⚡️痛点:不知道该怎么写对象嵌套导致代码不可读!
function TreeNode {
this.val = val;// 数据域
this.left = null;// 左子结点引用
this.right = null;// 右子结点引用
}
const tree = {
val这方面,'A',left: {
从val来看,'B'。left: { val: 'D',left: null,right: null },right:{ val: 'E',left: null,right: null }
},right:{
说到val,'C',left: { val: 'F',left: null,right: null },right:{ val: 'G',left: null,right: null }
}
};
A
/ \
B C
/ \ / \
D E F G
五、四种遍历方式 ⚡️痛点:面试常考遍历顺序,却记不住!
遍历口诀 🧩
说到前序遍历,根 → 左 → 右 ⚡️痛点:复制/序列化时忘记先处理根!
function preorder {
if return;console.log,// ✅① 根
preorder;// ✅② 左
preorder;// ✅③ 右
}
// 输出示例:A B D E C F G
中序遍历这方面,左 → 根 → 右 ⚡️痛点:忘记 BST 中序结果自然有序!
function inorder {
if return;inorder,话说回来,// ✅① 左
console.log;// ✅② 根
inorder;// ✅③ 右
}
// 输出示例:D B E A F C G
至于后序遍历,左 → 右 → 根 ⚡️痛点:删除/计算累计值时顺序写错导致错误!怎么说呢,
function postorder {
if return;postorder,// ✅① 左
postorder;// ✅② 右
console.log;// ✅③ 根
}
// 输出示例:D E B F G C A
层序遍历这方面,逐层访问 ⚡️痛点:写错循环条件导致死循环或遗漏最终一层!
function levelorder {
const queue =;// FIFO 队列 —— BFS 主要数据结构
const result =;if return result;queue.push,while {
const node = queue.shift;// 出队 - O
result.push;// visit
if queue.push;if queue.push;}
return result;}
// 输出示例:A B C D E F G
}
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback