public class DFSMain {
public static void main(String[] args) {
// 创建二叉树
TreeNode n11 = new TreeNode(11);
TreeNode n10 = new TreeNode(10);
TreeNode n9 = new TreeNode(9);
TreeNode n8 = new TreeNode(8);
TreeNode n7 = new TreeNode(7, n11, null);
TreeNode n6 = new TreeNode(6, n9, n10);
TreeNode n5 = new TreeNode(5);
TreeNode n4 = new TreeNode(4, null, n8);
TreeNode n3 = new TreeNode(3, n6, n7);
TreeNode n2 = new TreeNode(2, n4, n5);
TreeNode n1 = new TreeNode(1, n2, n3);
System.out.println(recursive(n1)); // [1, 2, 4, 8, 5, 3, 6, 9, 10, 7, 11]
System.out.println(unRecursive(n1)); // [1, 2, 4, 8, 5, 3, 6, 9, 10, 7, 11]
}
/**
* 递归
*/
public static List<Integer> recursive(TreeNode root) {
List<Integer> list = new ArrayList<>();
dfs(root, list);
return list;
}
public static void dfs(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
list.add(root.val);
// 左递归
dfs(root.left, list);
// 右递归
dfs(root.right, list);
}
/**
* 非递归
*/
public static List<Integer> unRecursive(TreeNode root) {
List<Integer> list = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
if (root == null) {
return list;
}
stack.push(root);
while (!stack.isEmpty()) {
// 弹栈
TreeNode node = stack.pop();
// 右子树先入栈
if (node.right != null) {
stack.push(node.right);
}
// 左子树后入栈
if (node.left != null) {
stack.push(node.left);
}
list.add(node.val);
}
return list;
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
TreeNode(int val) {
this.val = val;
}
@Override
public String toString() {
return "TreeNode{" +
"val=" + val +
", left=" + left +
", right=" + right +
'}';
}
}
相关推荐
【华为OD】| 查找树中元素_深度优先搜索 DFS
内容值为 10 的节点,有两个子节点,分别是 matrix[1]和 matrix[2],即[-21,3,4],[23,5].由于本。上面这句话的意思是,matrix[i] (是一个一维数组),我们用 arr = matrix[i],则 arr[0]表示节点。比如[10.1,2]表示。每个节点以一维数组 (int[]) 表示,所有节点信息构成二维数组 (int[][]),二维数组的 0 位置。每个节点以一维数组(int[])表示,所有节点信息构成二维数组(int[][]),二维数组的 0 位置存。
二叉树-深度遍历(DFS)和广度遍历(BFS)JAVA实现
二叉树-深度遍历(DFS)和广度遍历(BFS)JAVA实现
Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具
本文内容参考Joseph Perl 的线上会议,视频详情可见于,该视频会议内容主要介绍Topas功能、软件架构、工作流程、参数设定、物理模型、具体案例等,对TOPAS的基本入门使用方法以及使用规定作出阐述。
DFS深度优先搜索—Java版
精讲深度优先搜索,模板即是思想,用模板无难题!
保姆级教程:用Python 3.10和Ollama在Windows上搞定LightRAG本地部署(附环境配置避坑指南)
本文提供了一份详细的Windows系统下LightRAG本地部署指南,涵盖Python 3.10环境配置、Ollama模型服务安装到LightRAG核心组件部署的全流程。特别针对Windows平台常见问题提供解决方案,帮助开发者快速搭建高效的检索增强生成(RAG)系统,实现专业领域知识的智能检索与整合。
别再手动翻译PDF了!手把手教你用Zotero PDF Translate插件搞定外文文献(附最新GitHub下载链接)
本文详细介绍如何利用Zotero PDF Translate插件高效翻译外文文献,包括插件安装、配置及多引擎对比。通过划词翻译、段落翻译和全文翻译功能,显著提升科研工作效率,特别适合处理大量英文PDF文献的研究人员。
32二叉树——DFS深度优先遍历
二叉树中的深度优先算法
Trae的付费之路还挺艰难,茫茫多的人想付付不了(附解决办法)
不得不说,Trae国际版这个付费其实整的挺复杂的,但没办法,毕竟有政策限制,付费成功后,你就是尊贵的Pro用户啦,使用Claude 4不排队还是挺爽的,而且600次其实不算少了,有一个小技巧,简单的问题就把模型切到Gemini-2.5-flag,因为使用这个模型是没有次数限制的。其次付费的时候有个ZIP Code,这东西也是个迷之存在,有的地区节点需要填,有的不需要,如果你选到了不需要填的节点,那很好,付费就行了,如果需要填,可以填一个51800试试。
二叉树广度优先搜索、深度优先搜索(前序、中序、后序)遍历,动图详解-Java/Kotlin双版本代码
二叉树广度优先搜索、深度优先搜索(前序、中序、后序)遍历,动图详解-Java/Kotlin双版本代码
《嵌入式最全面试题-Offer直通车》目录
嵌入式领域蓬勃发展,嵌入式工程师成为众多科技企业争抢的热门人才。如果你渴望在嵌入式面试中脱颖而出,成功斩获心仪的 offer,那么《嵌入式最全面试题 - Offer直通车》将是你的绝佳选择。本专栏是优快云是热门专栏,100多篇文章,总字数过百万。每月新增订阅用户过百,现在是优惠价9.9元,后面要逐渐恢复原价,早订阅早受益。本专栏精心整理了众多超万字的精华内容,总计达数十万字的嵌入式面试题总结。涵盖从嵌入式基础知识到各大厂面试真题,从驱动开发到操作系统,从硬件到软件等各个方面。
Google Earth Engine 实现图像随机森林分类_遥感分类全流程详解
本文将通过一段完整的GEE代码,逐步讲解如何利用Sentinel-2影像和随机森林算法,实现地表覆盖分类。代码包含等关键步骤,适合遥感入门学习!
Java:实现返回二叉树所有根到叶的路径算法(附带源码)
Java:实现返回二叉树所有根到叶的路径算法(附带源码)
使用Google Earth Engine(GEE)的Python API,您可以将经纬度坐标转换为Landsat影像的路径/行号
使用Google Earth Engine(GEE)的Python API,您可以将经纬度坐标转换为Landsat影像的路径/行号。在这个示例中,我们选择了一个位于加利福尼亚州旧金山市附近的点,其经度为-122.084,纬度为37.421998。首先,我们需要导入必要的库和模块。接下来,我们定义一个函数,该函数将接收经度和纬度作为输入,并返回对应的Landsat路径/行号。最后,我们提取路径和行号的值,并将它们作为结果返回。现在,我们可以使用这个函数来获取特定点的Landsat路径/行号。
二叉树的广度优先搜索(BFS)和深度优先搜索(DFS)代码实现(Java)
本文的代码和图表来源于力扣(LeetCode) 作者:sdwwld 链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/solution/4chong-jie-jue-fang-shi-bfsdfszhong-xu-bian-li-di-/ 1 二叉树的广度优先搜索(BFS) 代码实现: public static void treeBFS(TreeNode root) { //如果为空直接返回 i
基于matlab的主成分分析的人脸二维码识别系统
人脸识别因其在系统安全验证、信用验证、刑侦跟踪、身份管理、视频会议、人机交互、智能家居等方面的巨大应用前景,成为当前模式识别和人工智能领域越来越热门的一个研究方向。随着安全入口控制和二维码智能扫描应用需求的快速增长,基于二维码识别的生物人脸统计识别技术也引起了人们的重视。本案例将详细讲解基于主成分分析的人脸特征提取的原理与方法,并将其与 QR 二维码的编解码进行结合,将 MATLAB 作为工具平台,调用 QR 二维码编解码应用程序,进而实现一个人脸二维码自动识别的系统原型。
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
leetcode 深度优先搜索 二叉树的所有路径 java
题目描述 给定一个二叉树,返回所有从根节点到叶子节点的路径。 如果当前节点为空,直接返回 如果是叶子节点(即左右子树为空),则说明找到一条路径,则将其加入到res中 如果不是叶子节点,则继续分别遍历其左右子节点 代码: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
leetcode 深度优先搜索 二叉树的最小深度 Java
题目描述 给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 深度优先搜索: 如果是空节点,返回0 如果左右子树为空 返回1 如果左子树为空,则遍历右子树 如果右子树为空,则遍历左子树 如果左右子树都不为空,则选择左子树和右子树中较小深度的,并加1 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
java实现广度优先搜索(BFS)深度优先搜索(DFS)
如何用java实现对二叉树的DFS和BFS? 首先,一个简单二叉树如下图: 每一个结点的数据域为整型,有左节点和右节点 实现如下 import java.util.LinkedList; import java.util.Queue; import java.util.Stack; /** * @author WangMingMing * @creat 2020-04-10 7:58 *...
[Java]Java实现二叉树和图的DFS、BFS
Java实现深度优先搜索DFS和广度优先搜索BFS
【leetcode刷题】25.二叉树的最大深度——Java版
已完成1/4
蓝桥杯 Java B 组之岛屿数量、二叉树路径和(区分DFS与回溯)
(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。它会沿着树的分支向下深入,直到节点无法继续深入为止(即叶子节点),然后返回并访问未遍历的分支。
(LeetCode 面试经典 150 题) 104. 二叉树的最大深度 (深度优先搜索dfs)
【代码】(LeetCode 面试经典 150 题) 104. 二叉树的最大深度 (深度优先搜索dfs)
(LeetCode 面试经典 150 题) 226. 翻转二叉树 (深度优先搜索dfs )
【代码】(LeetCode 面试经典 150 题) 226. 翻转二叉树 (深度优先搜索dfs )
二叉树最大宽度 : 简单 DFS 运用题
给你一棵二叉树的根节点root,返回树的 最大宽度。树的 最大宽度 是所有层中最大的 宽度。每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相同,两端点间会出现一些延伸到这一层的null节点,这些null节点也计入长度。题目数据保证答案将会在32位 带符号整数范围内。...
【leetcode113】【dfs】二叉树 路径总和||
题目 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1 ...
Leetcode之深度优先搜索(DFS)专题-1123. 最深叶节点的最近公共祖先(Lowest Common Ancestor of Deepest Leaves)...
Leetcode之深度优先搜索(DFS)专题-1123. 最深叶节点的最近公共祖先(Lowest Common Ancestor of Deepest Leaves) 深度优先搜索的解题详细介绍,点击 给你一个有根节点的二叉树,找到它最深的叶节点的最近公共祖先。 回想一下: 叶节点是二叉树中没有子节点的节点 树的根节点的深度为0,如...
306



被折叠的 条评论
为什么被折叠?



