朴素算法Bare Algo

二叉树

二叉树的遍历、构造、路径等问题。

算法题

(17)
104. 二叉树的最大深度
简单
给定一个二叉树,找出其最大深度二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
树深度优先搜索广度优先搜索
102. 二叉树的层序遍历
中等
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
树广度优先搜索
226. 翻转二叉树
简单
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
树深度优先搜索广度优先搜索
236. 二叉树的最近公共祖先
中等
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
树深度优先搜索
543. 二叉树的直径
简单
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个节点路径长度中的最大值。
树深度优先搜索
297. 二叉树的序列化与反序列化
困难
序列化是将一个数据结构或者对象转换为连续的比特位的过程,进而可以将转换后的数据存储在文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。
树设计字符串深度优先搜索广度优先搜索
94. 二叉树的中序遍历
简单
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
栈树深度优先搜索
98. 验证二叉搜索树
中等
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
树深度优先搜索二叉搜索树
110. 平衡二叉树
简单
给定一个二叉树,判断它是否是高度平衡的二叉树。
树深度优先搜索
199. 二叉树的右视图
中等
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
树深度优先搜索广度优先搜索
124. 二叉树中的最大路径和
困难
二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。
树深度优先搜索动态规划
105. 从前序与中序遍历序列构造二叉树
中等
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。
树数组哈希表分治
101. 对称二叉树
简单
给你一个二叉树的根节点 root ,检查它是否轴对称。
树深度优先搜索广度优先搜索
108. 将有序数组转换为二叉搜索树
简单
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。
数组分治树二叉搜索树
230. 二叉搜索树中第 K 小的元素
中等
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
树深度优先搜索二叉搜索树
114. 二叉树展开为链表
中等
给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
树深度优先搜索栈链表
437. 路径总和 III
中等
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
树深度优先搜索前缀和

实际应用

(6)
DOM/组件树遍历
简单
遍历 DOM 树或虚拟 DOM 树(VNode Tree)。利用 DFS/BFS 查找特定节点、收集页面信息或进行批量更新。
DFSBFS遍历
AST 代码分析
困难
Babel/ESLint/TypeScript 编译器中,将代码解析为抽象语法树(AST)。通过遍历 AST 查找特定代码模式、进行代码转换或自动化重构。
树遍历编译原理工具链
权限树/目录树
中等
处理嵌套的权限结构或文件目录树。实现父子节点的选中联动(级联选择)、计算最近公共祖先(LCA)或生成面包屑导航。
DFS树形控件交互
TreeView 懒加载
中等
实现大型树形控件的按需加载。仅在用户展开节点时请求子节点数据,并动态插入到树结构中。
动态树性能优化组件
嵌套路由树
中等
Vue Router / React Router 的路由配置通常是树形结构。遍历路由树生成面包屑、菜单,或在路由守卫中判断路径的可达性。
树搜索路由菜单
树形表单联动
困难
在低代码平台或复杂表单中,处理字段间的依赖关系(Schema 树)。当父字段变化时,通过路径查找通知子字段更新或验证。
树遍历表单低代码