java数据结构与算法刷题-----LeetCode144. 二叉树的前序遍历

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 利用递归,每次入栈一个结点(每次递归都是一个入栈操作)。然后依次访问左右结点
  2. 先序遍历是,先访问当前结点,然后访问左儿子,然后访问右儿子
  3. 可以自己创建栈,然后不使用递归
代码
  1. 递归
    在这里插入图片描述
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {private LinkedList<Integer> list = new LinkedList<>();/**递归先输出自己,然后左子树,然后右子树*/public List<Integer> preorderTraversal(TreeNode root) {if(root == null) return list;list.add(root.val);if(root.left != null) preorderTraversal(root.left);if(root.right != null) preorderTraversal(root.right);return list;}
}
  1. 迭代,自己创建栈模拟递归过程
    在这里插入图片描述
class Solution {/**迭代*/public List<Integer> preorderTraversal(TreeNode root) {Stack<TreeNode> stack = new Stack<>();//模拟栈LinkedList<Integer> list = new LinkedList<>();//保存答案while(root != null || !stack.isEmpty()){//如果栈不为空,或者当前结点不为空,就还能遍历while(root!=null){//不断访问list.add(root.val);//先访问当前结点stack.push(root);//然后将当前结点入栈root = root.left;//然后访问左子树}root = stack.pop();//然后出栈root = root.right;//访问其右子树}return list;}
}

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

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

相关文章

优思学院【六西格玛案例】美国医院急诊部满意度提升

今天&#xff0c;优思学院来分享一个早期六西格玛项目的案例&#xff0c;项目背景是这样的&#xff0c;多年前&#xff0c;美国犹他州盐湖城的LDS医院已经实施了许多最佳实践。医院提供了床旁登记、高级分诊协议、护理点测试和实时放射学检查。一个强大而全面的持续质量改进计划…

【Python】OpenCV-图像滤波

图像滤波 1. 引言 在图像处理中&#xff0c;滤波是一种常见的技术&#xff0c;用于去除图像中的噪声、平滑图像或突出图像的某些特征。本文将通过OpenCV库演示几种常见的滤波方法&#xff0c;每个滤波方法的原理和适用场景。 2. 代码示例 以下是一个使用OpenCV库的代码示例…

CSS三大定位方式(浮动、定位、弹性盒)详细解析

CSS三大定位方式 前言&#xff1a;作为一名前端开发&#xff0c;已经工作2年了。由于自己是半路出家&#xff0c;从嵌入式方向转到前端开发&#xff0c;都是边百度边开发&#xff0c;很多基础都不了解&#xff0c;只要解决问题就好&#xff0c;但是近来为了让自己知识体系化&a…

北京高考数学填空题真题练一练(2014-2023)

距离2024年高考还有不到四个月的时间&#xff0c;今天我们来看看北京市的高考数学题真题。最近几年&#xff0c;只有北京、天津、上海三个直辖市的高考题是自主命题&#xff0c;其他省份全部是使用教育部统一命题的试卷。而且北京、天津、上海的数学现在也不再区分文理卷了&…

FastGPT配置文件及OneAPI程序:

FastGPT配置文件及OneAPI程序&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;wuhe 创建fastgpt目录&#xff1a;mkdir fastgpt 切换到fastgpt目录&#xff1a;cd fastgpt 下载docker-compose文件&#xff1a;curl -O https://raw.githubusercontent.com/labring/Fast…

利用iSCSI服务部署IP SAN网络存储服务

一、配置环境&#xff08;Vmware WorkStation虚拟环境&#xff09; 服务端与客户端OS&#xff1a;openEuler 22.03-LTS CPU&#xff1a;1U1C 内存&#xff1a;2G 硬盘&#xff1a;5个SCSI磁盘&#xff0c;其中一个作为系统盘&#xff0c;另外四个配置为RAID5阵列 服务器IP…

TOUCHDESIGNER(1-2) 元件

元件来了 一级 二级 三级!!!

MySQL高级特性篇(9)-在MySQL中使用分布式事务

在MySQL数据库中&#xff0c;分布式事务是一种用于管理有关多个数据库之间的数据一致性和事务处理的技术。通过使用分布式事务&#xff0c;可以在多个数据库节点之间进行数据操作&#xff0c;并确保事务在所有节点上的一致性。 在MySQL中&#xff0c;使用分布式事务可以采用两…

2024PMP备考-高质量PMP真题和很详细解析(3)

本专题&#xff0c;华研荟专门为大家讲解最近两年在中国大陆、香港、澳门地区的PMP考试真题&#xff0c;并且提供比较详细的解析&#xff0c;让大家知其然&#xff0c;还知其所以然。帮助大家最后20天有效冲刺&#xff0c;一次性3A通过2024年PMP考试。 2024年PMP考试新考纲-近年…

Flask 学习100-Flask-SocketIO 结合 xterm.js 实现网页版Xshell

前言 xterm.js 是一个使用 TypeScript 编写的前端终端组件,可以直接在浏览器中实现一个命令行终端应用。 可以实现 web-terminal 功能,类似于Xshell 操作服务器。 Flask-SocketIO 快速入门与使用基础参考前面这篇https://www.cnblogs.com/yoyoketang/p/18022139 前后端交互…

【AI应用】MagicAnimate项目在COLAB在线部署----通过图片生成舞蹈视频

本专栏主要记录人工智能的应用方面的内容,包括chatGPT、AI绘图等等; 在当今AI的热潮下,不学习AI,就要被AI淘汰;所以欢迎小伙伴加入本专栏和我一起探索AI的应用,通过AI来帮助自己提升生产力; 订阅后可私聊我获取 《从零注册并登录使用ChatGPT》《从零开始使用chatGPT的AP…

个人建站前端篇(六)插件unplugin-auto-import的使用

vue3日常项目中定义变量需要引入ref,reactive等等比较麻烦&#xff0c;可以通过unplugin-auto-import给我们自动引入 * unplugin-auto-import 解决了vue3-hook、vue-router、useVue等多个插件的自动导入&#xff0c;也支持自定义插件的自动导入&#xff0c;是一个功能强大的typ…

数据结构:跳表讲解

跳表 1.什么是跳表-skiplist1.1简介1.2设计思路 2.跳表的效率分析3.跳表实现3.1类成员设计3.2查找3.3插入3.4删除3.5完整代码 4.skiplist跟平衡搜索树和哈希表的对比 1.什么是跳表-skiplist 1.1简介 skiplist本质上也是一种查找结构&#xff0c;用于解决算法中的查找问题&…

C++面试高频问题汇总( 一)

文章目录 1. 面向对象 struct和class有什么区别1.1 封装什么是封装 1.2 继承1.3 多态1.3.1 什么是多态&#xff1f;1.3.2 虚函数作用和意义1.3.3 什么是纯虚函数和抽象类 2. STL2.1 什么是STL 其创建目的是什么2.2 STL的基本概念以及组成2.3 请简单介绍STL的六大组件2.4 什么是…

Fluter学习3 - Dart 空安全

Dart 空安全&#xff1a; 空类型操作符 (?)空值合并操作符 (??)空值断言操作符 (!)延迟初始化 (late) 1、空类型操作符 (?) 当你想要根据一个表达式是否为 null 来执行某个操作时&#xff0c;你可以使用 (?)语法&#xff1a;expression1?.expression2如果 expression1…

Python开发户型图编辑器-2D/3D户型图展示

在现代家居设计中&#xff0c;户型图是不可或缺的工具&#xff0c;它为设计师和业主提供了一个直观的展示和规划空间的方式。然而&#xff0c;传统的户型图编辑软件往往复杂难用&#xff0c;限制了设计师的创作灵感。我们为您带来了一款全新的Python开发的户型图编辑器&#xf…

字节飞书面试算法题

后端]计算没有重复字符的子字符串数量 题目描述 给定你一个只包含小写英文字母的字符串 s 。如果一个子字符串不包含任何字符至少出现两次&#xff08;换句话说&#xff0c;它不包含重复字符&#xff09;&#xff0c;则称其为 特殊 子字符串。你的任务是计算 特殊 子字符串的数…

计算机视觉基础:【矩阵】矩阵选取子集

OpenCV的基础是处理图像&#xff0c;而图像的基础是矩阵。 因此&#xff0c;如何使用好矩阵是非常关键的。 下面我们通过一个具体的实例来展示如何通过Python和OpenCV对矩阵进行操作&#xff0c;从而更好地实现对图像的处理。 示例 示例&#xff1a;选取矩阵中指定的行和列的…

Positive Technologies 确保 Rostic‘s 网络应用程序的安全

☑️ PT BlackBox分析 Rostics 网络应用程序的安全性 快餐连锁店在其安全网络开发过程中使用了我们的扫描仪。PT BlackBox 总共扫描了 20 多个 Rostics 的外部服务&#xff08;每天访问量超过 100,000 人次&#xff09;和企业服务&#xff08;每天访问量≈7,000 名员工&#x…

区块链游戏解说:什么是 Nine Chronicles

作者&#xff1a;lesleyfootprint.network 编译&#xff1a;cicifootprint.network 数据源&#xff1a; Nine Chronicles Dashboard 什么是 Nine Chronicles Nine Chronicles 是一款去中心化的在线角色扮演游戏&#xff0c;标志着在线游戏和区块链技术的发展。 Nine Chroni…