当前位置: 首页 > news >正文

代码随想录刷题学习日记

仅为个人记录复盘学习历程,解题思路来自代码随想录

代码随想录刷题笔记总结网址:
代码随想录

二叉树的迭代遍历(不使用递归实现遍历)

递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,递归是通过栈实现的,自然也可以直接通过栈实现对二叉树的遍历。

144.二叉树的前序遍历

二叉树在树中前序遍历是中左右,使用迭代遍历每次先处理的是中间节点,那么先将根节点放入栈中,然后将右孩子加入栈,再加入左孩子。要先加入 右孩子,再加入左孩子,是因为基于栈先进后出的特性,这样出栈的时候才是中左右的顺序。(中间节点出栈才压入左右节点)

使用迭代法的前序遍历代码示例:

public List<Integer> preorderTraversal(TreeNode root) {//初始化:栈,列表,根入栈List<Integer>res=new ArrayList<>();Stack<TreeNode>stack=new Stack<>();//根为空if(root==null)return res;//根不为空stack.push(root);while(!stack.isEmpty()){TreeNode node=stack.pop();res.add(node.val);if(node.right!=null)stack.push(node.right);if(node.left!=null)stack.push(node.left);}return res;}

94.二叉树的中序遍历

二叉树的中序遍历是左中右,二叉树的中序遍历不能像二叉树的前序遍历和后序遍历一样,因为二叉树的中序遍历的访问顺序(对节点的遍历)和处理顺序(将节点值加入到结果数组中)不相同,所以需要使用其他方法。使用一个指针来控制访问和处理。对于每个树(子树)的根结点,先不断向左访问,将路径上的元素压入栈中,直到到达null再开始处理,将null的上一个访问的节点数据存入结果数组,将指针指向该结点的右节点。

使用迭代法实现的中序遍历示例:

public List<Integer> inorderTraversal(TreeNode root) {List<Integer>res=new ArrayList<>();if(root==null)return res;Stack<TreeNode>stack=new Stack<>();TreeNode cur=root;while(cur!=null||!stack.isEmpty()){if(cur!=null){stack.push(cur);cur=cur.left;}else{cur=stack.pop();res.add(cur.val);cur=cur.right;}}return res;}

​​​​​​​​​​​​​​145.二叉树的后序遍历

二叉树的后序遍历是左右中,二叉树在树中前序遍历是中左右,在使用迭代遍历时,只需要基于前序遍历,将左右节点的顺序交换,然后再将结果数组反转就可以了。

使用迭代法的后续遍历示例:

public List<Integer> postorderTraversal(TreeNode root) {List<Integer>res=new ArrayList<>();if(root==null)return res;Stack<TreeNode>stack=new Stack<>();stack.push(root);while(!stack.isEmpty()){TreeNode node=stack.pop();res.add(node.val); if(node.left!=null) stack.push(node.left);if(node.right!=null) stack.push(node.right);}Collections.reverse(res);return res;}

相关文章:

代码随想录刷题学习日记

仅为个人记录复盘学习历程&#xff0c;解题思路来自代码随想录 代码随想录刷题笔记总结网址:代码随想录 二叉树的迭代遍历(不使用递归实现遍历) 递归的实现就是&#xff1a;每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中&#xff0c;递归是通过栈实现…...

OpenText ALM Octane,为您的 DevOps 管道提供质量保证

实现更高水平的敏捷性、可追溯性和可预测性是一个持续的过程。ALM Octane 可帮助您改进开发和测试流程&#xff0c;从而改善整个软件交付价值流中的工作流程。 产品亮点 对基于软件的创新的需求已经加速&#xff0c;扰乱了几乎每个行业&#xff0c;也改变了我们的生活。快速交…...

【python实操】python小程序之参数化以及Assert(断言)

引言 python小程序之参数化以及Assert&#xff08;断言&#xff09; 文章目录 引言一、参数化2.1 题目2.2 代码2.3 代码解释 二、Assert&#xff08;断言&#xff09;2.1 概念2.1.1 Assert语句的基本语法&#xff1a;2.1.2 基本断言2.1.3 断言函数参数2.1.4 断言前后状态一致 2…...

探索CSS动画下的按钮交互美学

效果演示 这段代码通过SVG和CSS动画创建了一个具有视觉吸引力的按钮&#xff0c;当用户与按钮交互时&#xff08;如悬停、聚焦或按下&#xff09;&#xff0c;按钮会显示不同的动画效果。 HTML <button class"button"><div class"dots_border"…...

241024-Ragflow离线部署Docker-Rootless环境配置修改

A. 最终效果 B. 文件修改 docker-compose.yml include:- path: ./docker-compose-base.ymlenv_file: ./.envservices:ragflow:depends_on:mysql:condition: service_healthyes01:condition: service_healthyimage: ${RAGFLOW_IMAGE}container_name: ragflow-serverports:- ${…...

网络基础概念:广播域、冲突域与VLAN解析

一、网络基础概念 在现代计算机网络中&#xff0c;广播域、冲突域和虚拟局域网&#xff08;VLAN&#xff09;是网络架构和管理的核心概念。了解这些概念对网络性能优化、流量管理和安全性提升至关重要。 二、广播域 1. 定义 广播域是一个网络逻辑区域&#xff0c;在这个区域…...

【MySQL】C语言连接MySQL数据库3——事务操作和错误处理API

目录 1.MySQL事务处理机制 1.1.autocommit 1.2.autocommit的设置与查看 1.3.使用示例 2.事务操作API 2.1.设置事务提交模式——mysql_autocommit() 2.2.提交事务——mysql_commit() 2.3.事务回滚——mysql_rollback() 3.错误处理的API 3.1.返回错误的描述——mysql_er…...

ARM嵌入式学习--第六天(电子电路基础知识)

电子电路基础知识 -基本元器件 -电阻 电阻&#xff08;Resistance&#xff0c;通常用“R”表示&#xff09;&#xff0c;表示导体对电流的阻碍作用的大小&#xff1b;电阻导体本身的一种特性&#xff1b;超导体没有电阻&#xff0c;作用是用来降压 上拉电阻&#xff1a;将状态…...

JAVA----单例模式

1.单例模式概念&#xff1a; 单例模式是一种设计模式&#xff0c;他的核心是确保一个类只有一个实例&#xff0c;单例模式主要有两种方式&#xff1a;饿汉式与懒汉式 2.饿汉式 饿汉就是一个迫切的意思&#xff0c;类加载就会导致该单实例被创建 饿汉式第一种方式&#xff1a;…...

基于递推式最小二乘法的PMSM参数辨识MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 最小二乘法是一种回归估计法&#xff0c;适用于被辨识的参数与系统输出为线性关 系的情况。它是在一定数据量下&#xff0c;基于系统输出误差的平方和最小的准则对参 数进行辨识的方法。此模型通过…...

记录一次部署 k8s 集群无法启动

情况是这样的&#xff0c;k8s 集群&#xff08;v1.31&#xff09;所需要的组件已安装完成&#xff0c;通过 kubeadm init 已经安装部署成功&#xff0c;但是等几分钟&#xff0c;集群组件就一直在重启&#xff0c;查看日志是连接 etcd 超时&#xff0c;所以查看了 etcd 的日志&…...

Linux下MySQL8.x的编译安装与使用

Linux下MySQL的安装与配置 1. 安装环境初始化 1.1 查看是否安装过MySQL 如果使用rpm安装, 检查一下RPM PACKAGE rpm -qa | grep -i mysql # -i 忽略大小写 # 或者 yum list installed | grep mysql如果存在mysql-libs的旧版本包&#xff0c;显示如下 #存在 [rootlocalhost ~]…...

cpuinfo实践记录

py-cpuinfo 是一个用于获取 CPU 信息的 Python 库。它可以帮助你获取 CPU 的详细信息&#xff0c;如 CPU 型号、核心数、频率、缓存大小等。以下是对 py-cpuinfo 模块的详细介绍&#xff1a; 安装 你可以使用 pip 来安装 py-cpuinfo 库&#xff1a; pip install py-cpuinfo …...

【Java】ArrayList相关操作及其案例

ArrayList相当于集合&#xff0c;作为一种容器存储数据&#xff0c;与数组类似。不同的是&#xff0c;ArrayList中长度可变&#xff0c;而数组长度不可变。 ArrayList相关API 构造器 public ArrayList() 创建一个空的集合对象 ArrayList<String>arrnew ArrayList<>…...

手机pdf阅读器,用手机也能够阅读、编辑pdf文件

在日常的学习或办公过程中&#xff0c;PDF格式的文件是我们最常遇见的文件格式之一&#xff0c;那么为了更高效、便捷地处理这些文件&#xff0c;选择一款合适的PDF阅读器至关重要&#xff0c;可以帮助我们在阅读文件的同时还可以对文件进行适当编辑处理。今天小编给大家带来几…...

通过 Twitter Token 实现授权与操作

通过 Twitter Token 实现授权与操作 一、Twitter API 概览 1.1 Twitter API 简介 Twitter API 是 Twitter 公司提供的一种编程接口,它允许开发者访问 Twitter 的海量数据,包括用户信息、推文内容、关系网络等。通过这些接口,开发者可以创建应用程序,实现自动化的社交媒体…...

100个SSM框架(Spring + Spring MVC + MyBatis)毕业设计选题

100个SSM框架(Spring Spring MVC MyBatis)毕业设计选题 电子商务 综合性电子商务平台跨境电商管理系统社区团购平台二手商品交易网站农产品直销平台奢侈品鉴定与交易系统电子优惠券管理平台闪购秒杀系统个性化商品推荐系统多商户店铺管理平台 教育培训 在线教育课程平台智…...

STM32F1+HAL库+FreeTOTS学习17——事件标志组

STM32F1HAL库FreeTOTS学习17——事件标志组 1. 事件标志组1.1 事件标志组的的引入1.2 事件标志组简介1.3 事件标志组与队列、信号量的区别 2. 事件标志组下相关API函数2. 1 xEventGroupCreate()2. 2 xEventGroupCreateStatic()2. 3 vEventGroupDelete()2. 4 xEventGroupWaitBit…...

ElasticSearch基本概念

本文内容参考了田雪松老师编著的《Elastic Stack应用宝典》 对比关系型数据库 索引&#xff08;Index&#xff09;相当于库映射类型&#xff08;Mapping Type&#xff09;相当于表文档&#xff08;Document&#xff09;相当于行文档字段&#xff08;Field&#xff09;相当于列…...

fluent-ffmpeg操作MP3文件深入解析

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 引言 fluent-ffmpeg是一个功能强大的Node.js库&#xff0c;它为FFmpeg提供了一个流畅的接口。FFmpeg是一个著名的多媒体框架&#xff0c;以处理音频、视频和…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...