JAVA学习-练习试用Java实现“二叉树的中序遍历”

问题:

给定一个二叉树的根节点 root ,返回它的 中序 遍历。

示例 1:

输入:root = [1,null,2,3]

输出:[1,3,2]

示例 2:

输入:root = []

输出:[]

示例 3:

输入:root = [1]

输出:[1]

示例 4:

输入:root = [1,2]

输出:[2,1]

示例 5:

输入:root = [1,null,2]

输出:[1,2]

提示:

树中节点数目在范围 [0, 100] 内

-100 <= Node.val <= 100

解答思路:

以下是使用递归方法实现二叉树的中序遍历的 Java 代码示例:

class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int val) {this.val = val;}}public class InorderTraversal {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();inorderTraversalHelper(root, result);return result;}private void inorderTraversalHelper(TreeNode root, List<Integer> result) {if (root!= null) {inorderTraversalHelper(root.left, result);result.add(root.val);inorderTraversalHelper(root.right, result);}}public static void main(String[] args) {// 构建示例二叉树TreeNode root = new TreeNode(1);root.right = new TreeNode(2);root.right.left = new TreeNode(3);InorderTraversal traversal = new InorderTraversal();List<Integer> result = traversal.inorderTraversal(root);// 打印中序遍历结果for (Integer val : result) {System.out.print(val + " ");}}}

上述代码中,首先定义了一个'TreeNode'类来表示二叉树的节点。然后,'inorderTraversal'方法接受二叉树的根节点作为参数,并通过调用'inorderTraversalHelper'辅助方法来进行中序遍历。辅助方法使用递归的方式,先遍历左子树,然后访问当前节点,最后遍历右子树,并将遍历到的值添加到结果列表中。在'main'方法中,我们构建了一个示例的二叉树,并调用'inorderTraversal'方法进行中序遍历,最后打印出遍历结果。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统面试篇一

很多读者抱怨计算操作系统的知识点比较繁杂&#xff0c;自己也没有多少耐心去看&#xff0c;但是面试的时候又经常会遇到。所以&#xff0c;我带着我整理好的操作系统的常见问题来啦&#xff01;这篇文章总结了一些我觉得比较重要的操作系统相关的问题比如 用户态和内核态、系统…

C++一文讲透thread中的detach和join的差别

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、thread详解二、线程何时运行三、线程启动方式1.join2.detach 总结 前言 无论哪种语言线程在绝大多数项目中都是会用到的&#xff0c;C也一样&#xff0c;C…

昇思25天学习打卡营第9天 | 静态图加速

内容介绍&#xff1a; AI编译框架分为两种运行模式&#xff0c;分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行&#xff0c;但也支持手工切换为静态图模式。两种运行模式的详细介绍如下&#xff1a; 动态图模式&#xff1a; 动态图的特点是计算图的…

【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF

【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF 前言一、Stirling-PDF介绍1.1 Stirling-PDF简介1.2 Stirling-PDF功能 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四…

详解Elastic Search高速搜索背后的秘密:倒排索引

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 全文搜索属于最常见的需求&#xff0c;开源的 Elasticsearch &#xff08;以下简称 Elastic&#xff09;是目前全文搜索引…

Python应用开发——30天学习Streamlit Python包进行APP的构建(10)

st.map 显示一张叠加了散点图的地图。 它是 st.pydeck_chart 的包装器&#xff0c;用于在地图上快速创建散点图表&#xff0c;并具有自动居中和自动缩放功能。 使用该命令时&#xff0c;Mapbox 会提供地图瓦片来渲染地图内容。请注意&#xff0c;Mapbox 是第三方产品&#x…

海云安参编《数字安全蓝皮书 》正式发布并入选《2024中国数字安全新质百强》荣膺“先行者”

近日&#xff0c;国内数字化产业第三方调研与咨询机构数世咨询正式发布了《2024中国数字安全新质百强》&#xff08;以下简称百强报告&#xff09;。海云安凭借在开发安全领域的技术创新力及市场影响力入选百强报告“新质百强先行者” 本次报告&#xff0c;数世咨询经过对国内8…

AJAX 实例:深入解析与实战应用

AJAX 实例:深入解析与实战应用 引言 AJAX(Asynchronous JavaScript and XML)是一种无需重新加载整个网页的情况下,能够更新部分网页的技术。自2005年提出以来,AJAX已成为现代Web开发的重要组成部分,极大地提升了用户体验和网页性能。本文将通过一系列实例,深入解析AJA…

用Verilog实现4位计数器(时序逻辑)

用Verilog实现4位计数器。&#xff08;时序逻辑&#xff09; 实验目的&#xff1a; 通过用Verilog实现4位计数器&#xff0c;进一步熟悉Verilog的语法和时序逻辑电路。 实验描述&#xff1a; 输入&#xff1a; Clock&#xff1a;如果计数器enable信号为1&#xff0c;那么在…

多功能气象传感器的工作原理

TH-WQX9多功能气象传感器是一种集成了多种传感器技术的气象观测装置&#xff0c;旨在同时测量和监测大气中的多个气象要素&#xff0c;以提供全面、准确的气象信息。以下是关于多功能气象传感器的详细介绍&#xff1a; 技术原理 多功能气象传感器采用多种传感器技术相结合&…

深入理解Git:rebase与merge

在Git的版本控制中&#xff0c;rebase和merge是两个至关重要的操作&#xff0c;它们用于整合不同分支的修改。然而&#xff0c;很多开发者在使用时容易混淆&#xff0c;今天我们就来详细解析一下两者的区别、优缺点&#xff0c;并通过实战代码来演示它们的用法。 一、rebase与…

Linux(Ubuntu)下源码开发整个流程完成版本(下载->编译->模拟器运行)

写这篇文章没别的意思, 年纪大了记性不好, 这次工作中下载,编译遇到了一些之前没遇到的问题,所以就所幸记录一下, 以便日后能快速查阅 好了, 正题开始 首先我们下载AOSP源代码开始 AOSP源代码下载 首先找到官网https://source.android.google.cn/ 进入后最上面点击获取源代…

day01-项目介绍及初始化-登录页

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 day01-项目介绍及初始化-登录页一、人力资源项目介绍1.1项目架构和解决方案主要模块解决的问题 二、拉取项目基础代码1.引入库2.升级core-js版本到3.25.5按照完整依…

LSTM时间序列基础学习

时间序列 时间序列可以是一维&#xff0c;二维&#xff0c;三维甚至更高维度的数据&#xff0c;在深度学习的世界中常见的是三维时间序列&#xff0c;这三个维度分别是&#xff08;batch_size,time_step,input_dimensions&#xff09;。 其中time_step是时间步&#xff0c;它…

jenkins中执行docker命令

1. 修改docker.sock文件的所属组 命令如下&#xff1a; sudo chown root:root docker.sock 2. 对这个文件赋予权限&#xff0c;供其他用户使用&#xff0c;给定权限命令如下&#xff1a; sudo chmod orw docker.sock 3. docker容器映射 这里需要两个文件&#xff1a; 一个…

js-iframe-同源策略-addEventListener-postMessage-父子框架

文章目录 1.同源策略2.不同源解决办法-postMessage不受跨域的影响2.1.addEventListener函数监听消息2.2.父传子-不同源2.3.子传父-不同源 3.通过父页面操作子页面-同源3.1.值3.2.函数 4.通过子页面操作父页面-同源4.1.值4.2.函数 1.同源策略 在HTML页面中&#xff0c;我们有时…

等保主机测评防骗指南(资产调研)

你是否测评时常被运维给忽悠&#xff1f;是否觉得以下的对话耳熟&#xff1f; 你&#xff1a;您好&#xff0c;请问你们的主机资产有哪些&#xff0c;包括服务器、数据库、中间件、应用系统等。 甲&#xff1a;我们资产就这两台服务器&#xff0c;数据库什么的都这上面&#…

中断的“挂起状态”

中断的“挂起状态”&#xff08;Pending State&#xff09;是指中断信号已经被系统识别&#xff0c;但尚未被处理器处理的状态。在微控制器或计算机系统中&#xff0c;中断通常是程序外部事件&#xff08;如硬件设备的信号&#xff09;触发的信号&#xff0c;用于通知处理器需要…

C++关键字总结

1.数据类型 bool:布尔类型&#xff0c;属于基本类型的整数类型&#xff0c;取值为真和假 true:具有布尔类型的字面量&#xff0c;表示真 false:具有布尔类型的字面量&#xff0c;表示假 char:表示字符型&#xff0c;定义了字节的大小&#xff0c;char表示单字节字符 wchar_t:表…

蛇形矩阵(xmuoj)

描述 输入两个整数n和m&#xff0c;输出一个n行m列的矩阵&#xff0c;将数字11到nm按照回字蛇形填充至矩阵中。 具体矩阵形式可参考样例。 输入 输入共一行&#xff0c;包含两个整数n和m。 输出 输出满足要求的矩阵。 矩阵占n行&#xff0c;每行包含m个空格隔开的整数。…