关于二叉树BFS、DFS的总结
1 BFS、DFS算法的定义
BFS:广度优先搜索算法,也可称为层序遍历,按照二叉树的层次进行访问,可采用队列保存每一层的节点。
DFS:深度优先搜索算法,尽可能深的搜索树的分支,当当前节点所在的边都被访问过,回溯至发现当前节点边的起始节点,一直进行至源节点可达的所有节点为止。
2 二叉树的定义
public class TreeNode{
int val;
TreeNode left;
TreeNode right;
public TreeNode() {
}
public TreeNode(int val) {
this.val = val;
}
public TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
3 采用BFS遍历二叉树的代码实现
- 代码流程
- 1.定义二叉树;
- 2.初始化队列,root入队;
- 3.循环遍历,当队列为空时跳出
- 1.节点出队;
- 2.如果左子节点不为空,左子节点入队;
- 3.如果右子节点不为空,右子节点入队;
代码实现
public class BFSTree {
public void bfsTree(TreeNode root){
LinkedList<TreeNode> queue = new LinkedList<>();
if (root != null) queue.add(root);
while (!queue.isEmpty()){
TreeNode node = queue.poll();
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
}
}
}
4 采用BFS遍历二叉树的代码实现
4.1 递归实现
树中常见的DFS可分为:先序遍历、中序遍历、后序遍历,这里使用先序遍历实现。
- 代码流程
- 1.定义二叉树
- 2.递归终止条件:越过叶子节点;
- 3.递归递推:本质是对树做先序遍历
- 1.dfs(root.left);
- 2.dfs(root.right);
代码实现
public class DFSTree{
List<Integer> list = new ArrayList<>();
public void dfsTree(TreeNode root){
if (root == null) return;
list.add(root.val);
dfsTree(root.left);
dfsTree(root.s
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!