Appearance
数组、树与遍历:DFS、BFS 与层级结构展开
主题边界
- 前端常见树结构包括菜单、评论树、组织架构、路由表和虚拟 DOM。
- 遍历问题要先明确需要的是搜索、转换、扁平化还是重建。
机制与流程
- DFS 可以用递归或显式栈实现,适合深度优先处理某一条路径。
- BFS 使用队列按层推进,适合层级统计、最短层级路径和逐层渲染。
- 数组转树通常依赖
id -> node映射构建父子关系,树转数组则常结合遍历顺序输出。
关键差异
- 递归写法简洁,但深度过大可能栈溢出;显式栈/队列更易控制中断与状态。
- 前序、中序、后序是二叉树术语,在通用多叉树场景更应该直接说明访问时机。
边界条件
- 输入数据可能有环、缺失父节点或乱序,工程实现不能默认数据完美。
- 很多题目其实考的是遍历中的状态收集,而不是遍历本身。
工程落点
- 前端树结构操作经常和 UI 状态联动,例如展开收起、懒加载子节点和权限剪枝。
- 复杂树处理要优先保证数据结构清晰,再考虑遍历性能和渲染策略。