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实现
科研人必备!用WisPaper搭建个人文献知识库的完整指南(附Zotero联动技巧)
本文详细介绍了如何利用WisPaper搭建高效的个人文献知识库,包括文件命名标准化、文件夹结构设计、语义搜索技巧及与Zotero的深度联动方法。通过智能标签系统和知识图谱功能,科研人员可以快速定位关键文献,提升研究效率。特别适合需要管理大量学术文献的研究者。
DFS深度优先搜索—Java版
精讲深度优先搜索,模板即是思想,用模板无难题!
Aurora8b10b光口通信实战:复位时序与IP核配置详解
本文深入解析了Aurora 8B10B协议在FPGA高速光口通信中的核心实践,重点剖析了确保链路稳定启动的关键复位时序与IP核配置细节。通过详解全双工与单工模式下的复位流程、Vivado中IP核的物理层与链路层参数设置,并结合用户逻辑设计实例,为工程师实现可靠的高速数据传输提供了清晰的实战指南。
UE4 Instanced Mesh 半透明渲染顺序不对解决
以绿色方块为Instanced Mesh为例。 正确的半透应该是这样的: 这是一般蓝图Actor方块,其半透是正常的。 然而Instanced Mesh因为过多,UE4不给你缓存正确的渲染顺序。所以,在不改代码的情况下,想解决Instanced Mesh半透问题,是不可能的。不正确的半透如下: 注意到错误发生在Instanced Mesh的方块与方块之间。 但我就是要解决,...
32二叉树——DFS深度优先遍历
二叉树中的深度优先算法
Flink实战(101):双流join(三)双流中实现Inner Join、Left Join与Right Join
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。 《2021年最新版大数据面试题全面开启更新》 简介 之前文章中提到JoinedStream与CoGroupedStream,例如下列代码: dataStream.join(otherStream) .where(0).equalTo(1) .window(TumblingEventTimeWindows.of(Time.seconds(3))) .apply { ... } 由于joinedStream与
二叉树广度优先搜索、深度优先搜索(前序、中序、后序)遍历,动图详解-Java/Kotlin双版本代码
二叉树广度优先搜索、深度优先搜索(前序、中序、后序)遍历,动图详解-Java/Kotlin双版本代码
【如何学习CAN总线测试】——AUTOSAR网络管理自动化测试(CAPL源码)
上一章介绍的是AUTOSAR网络管理如何测试、用例设计,对于不满足手工测试的同学,本章就介绍AUTOSAR网络管理自动化测试。
两组相机(或三维点)对齐方法介绍及实现代码(求解相似变换,包含旋转R、平移t、尺度s)
这个变换用于将生成的稀疏重建场景对齐到真值上。由于SfM(Structure from Motion,运动恢复结构)求解的结果是尺度未定的,所以重建场景与真值之间不仅会相差一个旋转与平移,还会存在尺度缩放。待求解的问题可以描述为:已知一组相机(个数为m)的位姿真值Rgt、tgt和预测位姿Rpred、tpred,现要将预测值对齐到真值上。它们之间会相差一个相似变换Msimilarity,包括尺度s、旋转量R、平移量t,可以根据如下步骤进行求解: 1 求解旋转R 首先计算所有m个相机的位姿差异总和
Java:实现返回二叉树所有根到叶的路径算法(附带源码)
Java:实现返回二叉树所有根到叶的路径算法(附带源码)
K8S部署Java项目 pod的logs报错为:Error: Unable to access jarfile app.jar
每个人都有惰性,但不断学习是好好生活的根本,共勉!
二叉树的广度优先搜索(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
【实战圣经】YOLOv8-pose姿态估计模型从训练到RK3588部署:让边缘端骨骼识别速度突破60FPS
本教程从“模型训练-转换-边缘部署”全链路拆解了YOLOv8-pose姿态估计方案在RK3588上的落地过程,每一步都经过实战验证。无论是智能健身的动作实时纠正,还是工业设备的关键部件姿态检测,这套流程都能让你以最低成本实现高精度、高实时性的姿态估计应用。如果你在实践中遇到模型转换报错、部署性能不达标等问题,可聚焦某一环节深入优化——毕竟,让AI在边缘端“精准捕捉每一个关键点”,才是技术驱动场景创新的核心。
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
leetcode 深度优先搜索 二叉树的所有路径 java
题目描述 给定一个二叉树,返回所有从根节点到叶子节点的路径。 如果当前节点为空,直接返回 如果是叶子节点(即左右子树为空),则说明找到一条路径,则将其加入到res中 如果不是叶子节点,则继续分别遍历其左右子节点 代码: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
leetcode 深度优先搜索 二叉树的最小深度 Java
题目描述 给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 深度优先搜索: 如果是空节点,返回0 如果左右子树为空 返回1 如果左子树为空,则遍历右子树 如果右子树为空,则遍历左子树 如果左右子树都不为空,则选择左子树和右子树中较小深度的,并加1 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
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



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



