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

【牛客网刷题记录】【java】二叉树

(1)二叉树的前中后遍历

最基本的树的遍历,不会可以重开了

public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param root TreeNode类 * @return int整型一维数组*/public void preorder(List<Integer> list, TreeNode root){// 先序遍历则先处理根节点list.add(root.val);if(root.left!=null){preorder(list, root.left);}if(root.right!=null){preorder(list, root.right);}}public int[] preorderTraversal (TreeNode root) {if(root==null){return new int[0];}// write code hereList<Integer> tmp=new ArrayList<>();preorder(tmp, root);int [] res=new int[tmp.size()];for(int i=0; i<res.length; i++){res[i]=tmp.get(i);}return res;}
}

前序遍历的顺序为 根-左-右,中序为左-根-右,后序为左-右-根,因此这些遍历也可以说是先根、中根、后根遍历。

 public void preorder(List<Integer> list, TreeNode root){// 先序遍历则先处理根节点// list.add(root.val);if(root.left!=null){preorder(list, root.left);}//list.add(root.val); 中序遍历if(root.right!=null){preorder(list, root.right);}//list.add(root.val); 后续遍历}

(2) 二叉树的最大深度

链接
不知道空间复杂度为O(1)的算法是什么…除非你修改树的数据结构,因此这显然是不成立的。
首先可以用dfs来做,空间复杂度为O(n),即为栈的高度。空间复杂度会为n是因为树可能只有一个分支。我们可以再写一个函数来完成dfs。即如果左子非空,则向左dfs,同时deep+1.右子非空,则向右dfs,同时deep+1. 最后查看max与deep的大小,并且更改max。如果理解不了可以学习栈的知识,以及递归是怎么做到的。

int max=0;public void dfs(TreeNode root, int deep){if(root.left!=null){dfs(root.left, deep+1);}if(root.right!=null){dfs(root.right, deep+1);}if(max<deep){max=deep;} }public int maxDepth (TreeNode root) {// write code hereif(root==null){return 0;}dfs(root,1);return max;}

除此之外,还可以用层序遍历,即记录有多少层,这样也可以得到最大深度。但空间复杂度一定不为O(1),而是O(n).
层序遍历需要单独记录一下每一层的元素,这样可以判断何时遍历完一层。

public int maxDepth (TreeNode root) {if(root==null){return 0;}int max=0;// write code hereQueue<TreeNode> q=new LinkedList<>();q.add(root);while(!q.isEmpty()){int len=q.size();for(int i=0; i<len; i++){TreeNode t=q.poll();if(t.left!=null){q.add(t.left);}if(t.right!=null){q.add(t.right);}}max++;}return max;}

(3) 二叉搜索树与双向链表

链接
不难发现,二叉搜索树的中序遍历就是我们最终需要的顺序,因此这题一定会和中序遍历扯上关系。我们的基本思路就是中序遍历,即:

 public void inorder(List<Integer> list, TreeNode root){if(root.left!=null){preorder(list, root.left);}list.add(root.val); // 或者其他操作 if(root.right!=null){preorder(list, root.right);}}

重点问题是如何处理前驱和后继的指向。可以创建空节点pre,前驱用当前节点的左指针指向pre,而pre的右指针指向当前节点,最后将pre指向当前节点。我们的这部分就是中序遍历的操作部分,即上面代码的 其他操作。
我们的convert操作即为inorder遍历,但不需要做任何操作。中序的节点操作即对我刚刚描述的内容的转义。

public class Solution {TreeNode pre=null, head=null;public TreeNode Convert(TreeNode pRootOfTree) {if(pRootOfTree==null){return null;}Convert(pRootOfTree.left);// 开始找到头节点if(head==null){head=pRootOfTree;pre=head;}else{pRootOfTree.left=pre;pre.right=pRootOfTree;pre=pRootOfTree;}Convert(pRootOfTree.right);return head;}
}

(4) 合并二叉树

链接
可以用递归来做,如果t1为null则返回t2,反之返回t1。每次都合并一次节点即可。

public TreeNode mergeTrees (TreeNode t1, TreeNode t2) {if(t1==null){return t2;}if(t2==null){return t1;}// write code hereTreeNode head=new TreeNode(t1.val+t2.val);head.left=mergeTrees(t1.left, t2.left);head.right=mergeTrees(t1.right, t2.right);return head;}

相关文章:

【牛客网刷题记录】【java】二叉树

&#xff08;1&#xff09;二叉树的前中后遍历 最基本的树的遍历&#xff0c;不会可以重开了 public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param root TreeNode类 * return int整型一维…...

一文讲透大语言模型构建流程

最近已有不少大厂都在秋招宣讲了&#xff0c;也有一些在 Offer 发放阶段。 节前&#xff0c;我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了…...

VR视频怎样进行加密和一机一码的使用?--加密(一)

在视频加密领域&#xff0c;我们常见接触的就是在普通设备上使用的加密视频&#xff0c;如电脑、手机、平板等。Vr的发展和兴起给人们带来最真实的体验感受&#xff0c;不仅在游戏行业应用较广&#xff0c;在一些影院或者元宇宙文旅、展厅等视频场景也备受青睐。 随着VR视频场景…...

Ubuntu启动后第一次需要很久才能启动GTK应用问题

Ubuntu启动后第一次需要很久才能启动GTK应用问题 自从升级了 Ubuntu 之后&#xff0c;设备重启&#xff0c;发现打开 Terminal 、Nautilus 以及其他的GTK 应用都很慢&#xff0c;需要至少一分钟的时间启动。 刚开始也是拿着 journalctl 的异常日志去寻找答案&#xff0c;但是没…...

栏目二:Echart绘制动态折线图+柱状图

栏目二&#xff1a;Echart绘制动态折线图柱状图 配置了一个ECharts图表&#xff0c;该图表集成了数据区域缩放、双Y轴显示及多种图表类型&#xff08;折线图、柱状图、象形柱图&#xff09;。图表通过X轴数据展示&#xff0c;支持平滑折线展示比率数据并自动添加百分比标识&…...

Gromacs——使用过程中暴露问题分析及学习

gromacs——突变残基蛋白电场MD和基本分析从入门到发SCIENCE&#xff1a;基于Gromacs的蛋白小分子动态模拟全过程解析水溶性蛋白模拟全过程&#xff1a;从准备蛋白结构文件&#xff08;top、itp、gro文件生成&#xff09;到模拟数据分析GromacsGROMACS 教程&#xff1a;蛋白配体…...

Webpack模式-Resolve-本地服务器

目录 ResolveMode配置搭本地服务器区分环境配置 Resolve 前面学习时使用了各种各样的模块依赖&#xff0c;这些模块可能来自于自己编写的代码&#xff0c;也可能来自第三方库&#xff0c;在 Webpack 中&#xff0c;resolve 是用于解析模块依赖的配置项&#xff0c;它决定了 We…...

【LLM论文日更】| 通过指令调整进行零样本稠密检索的无监督文本表示学习

论文&#xff1a;https://arxiv.org/pdf/2409.16497代码&#xff1a;暂未开源机构&#xff1a;Amazon AGI、宾夕法尼亚州立大学领域&#xff1a;Dense Retrieval发表&#xff1a;Accepted at DCAI24 workshopCIKM2024 研究背景 研究问题&#xff1a;这篇文章要解决的问题是如…...

02.01、移除重复节点

02.01、[简单] 移除重复节点 1、题目描述 编写代码&#xff0c;移除未排序链表中的重复节点。保留最开始出现的节点。 2、解题思路 为了实现这一目标&#xff0c;我们可以使用一个哈希表&#xff08;或集合&#xff09;来记录已经遇到的节点值&#xff0c;逐步遍历链表并删…...

旅游推荐|旅游推荐系统|基于Springboot+VUE的旅游推荐系统设计与实现(源码+数据库+文档)

旅游推荐系统 目录 基于java的旅游推荐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xf…...

github项目--crawl4ai

github项目--crawl4ai 输出html输出markdown格式输出结构化数据与BeautifulSoup的对比 crawl4ai github上这个项目&#xff0c;没记错的话&#xff0c;昨天涨了3000多的star&#xff0c;今天又新增2000star。一款抓取和解析工具&#xff0c;简单写个demo感受下 这里我们使用cra…...

仅有N卡独显的情况下安装ubuntu是遇到的黑屏,加载卡顿等问题

Ubuntu安装的两个阶段都要进行一定的设置来临时禁用掉独显或者ubuntu的通用显卡驱动。 U盘启动阶段 U盘启动阶段要对U盘启动项进行设置,通过BIOS设置第一boot为USB hard disk后可以进到U盘引导项,第一项为 “try or install ubuntu”,倒计时10s后自动进入。 这个时候不要…...

Vite:为什么选 Vite

一、现实问题 在浏览器支持 ES 模块之前&#xff0c;JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。这也正是我们对 “打包” 这个概念熟悉的原因&#xff1a;使用工具抓取、处理并将我们的源码模块串联成可以在浏览器中运行的文件。 时过境迁&#xff0c;我…...

个人项目简单https服务配置

1.SSL简介 SSL证书是一种数字证书&#xff0c;由受信任的证书颁发机构&#xff08;CA&#xff09;颁发&#xff0c;用于在互联网通信中建立加密链接。SSL代表“安全套接层”&#xff0c;是用于在互联网上创建加密链接的协议。SSL证书的主要目的是确保数据传输的安全性和隐私性…...

Rust 函数

Rust 函数 Rust 是一种系统编程语言&#xff0c;以其安全性、并发性和性能而闻名。函数是 Rust 编程语言中的基本构建块&#xff0c;用于封装可重用的代码块。本文将深入探讨 Rust 中的函数&#xff0c;包括其定义、特性、参数、返回值以及高级概念。 函数定义 在 Rust 中&a…...

微信小程序中的 `<block>` 元素:高效渲染与结构清晰的利器

微信小程序中的 <block> 元素&#xff1a;高效渲染与结构清晰的利器 在微信小程序的开发中&#xff0c;<block> 元素扮演着举足轻重的角色。尽管它不会在页面中渲染任何可见的节点&#xff0c;但作为一个逻辑上的容器&#xff0c;<block> 在条件渲染和循环渲…...

选读算法导论5.2 指示器随机变量

为了分析包括包括雇佣分析在内的许多算法&#xff0c;我们将使用指示器随机变量&#xff0c;它为概率和期望之间的转换提供了一个便利的方法&#xff0c;给定一个样本空间S和事件A&#xff0c;那么事件A对应的指示器随机变量&#xff1a; Xa 1 如果A发生    0 如果…...

大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

centos9 nginx 版本

centos9 安装 ssh -V OpenSSH_8.7p1, OpenSSL 3.2.2 4 Jun 2024 openssl version OpenSSL 3.2.2 4 Jun 2024 (Library: OpenSSL 3.2.2 4 Jun 2024) sudo yum install nginx Installing:nginx x86_64 2:1.20.1…...

https访问报错:net::ERR_CERT_DATE_INVALLD

目录 简介异常排查原因解决补充 简介 访问https资源出现报错 异常 排查 将地址拿到浏览器进行访问&#xff0c;可以很清晰的看到出现该问题的原因 原因 1、SSL证书已过期 2、服务器日期不准&#xff0c;不在证书有效期 解决 1、重新申请SSL证书&#xff0c;并配置 2、校正…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...

基于小程序老人监护管理系统源码数据库文档

摘 要 近年来&#xff0c;随着我国人口老龄化问题日益严重&#xff0c;独居和居住养老机构的的老年人数量越来越多。而随着老年人数量的逐步增长&#xff0c;随之而来的是日益突出的老年人问题&#xff0c;尤其是老年人的健康问题&#xff0c;尤其是老年人产生健康问题后&…...

【动态规划】B4336 [中山市赛 2023] 永别|普及+

B4336 [中山市赛 2023] 永别 题目描述 你做了一个梦&#xff0c;梦里有一个字符串&#xff0c;这个字符串无论正着读还是倒着读都是一样的&#xff0c;例如&#xff1a; a b c b a \tt abcba abcba 就符合这个条件。 但是你醒来时不记得梦中的字符串是什么&#xff0c;只记得…...