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

树的刷题,嗝

今天忘记带本子了,就没有学习java了,于是一心刷题,好烦遇到了两个奇怪的题目,我没跟题解写的,但是我是没想到奇怪的样例.

no.1

617. 合并二叉树

难度简单1221收藏分享切换为英文接收动态反馈

给你两棵二叉树: root1 和 root2 。

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。

返回合并后的二叉树。

注意: 合并过程必须从两个树的根节点开始。

示例 1:

输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]
输出:[3,4,5,5,4,null,7]

示例 2:

输入:root1 = [1], root2 = [1,2]
输出:[2,2]

提示:

  • 两棵树中的节点数目在范围 [0, 2000] 内
  • -104 <= Node.val <= 104

我本来也不太会,想着如何把子节点变换,直到看到了题解里面,函数的返回值是节点指针,于是我悟了

一下就会应用了

struct TreeNode* mergeTrees(struct TreeNode* root1, struct TreeNode* root2){if(root1==NULL){return root2;}if(root2==NULL){return root1;}
struct TreeNode* root3= (struct TreeNode*)malloc(sizeof(struct TreeNode));root3->val=root1->val+root2->val;root3->left=mergeTrees(root1->left,root2->left);root3->right=mergeTrees(root1->right,root2->right);return root3;
}

左节点空的的,返回右节点

反之 

要是都不为空就定义节点等于root1+root2,从根节点开始

遍历下去,最后root3就是新的合并树的头节点

no.2

剑指 Offer II 047. 二叉树剪枝

难度中等71收藏分享切换为英文接收动态反馈

给定一个二叉树 根节点 root ,树的每个节点的值要么是 0,要么是 1。请剪除该二叉树中所有节点的值为 0 的子树。

节点 node 的子树为 node 本身,以及所有 node 的后代。

示例 1:

输入: [1,null,0,0,1]
输出: [1,null,0,null,1] 
解释: 
只有红色节点满足条件“所有不包含 1 的子树”。
右图为返回的答案。

示例 2:

输入: [1,0,1,0,0,0,1]
输出: [1,null,1,null,1]
解释: 

示例 3:

输入: [1,1,0,1,1,0,1,0]
输出: [1,1,0,1,1,null,1]
解释: 

提示:

  • 二叉树的节点个数的范围是 [1,200]
  • 二叉树节点的值只会是 0 或 1

依旧以节点指针返回

对节点的left,以及right遍历判断,要是不是0就返回原来的指针

要是0就返回NULL

这个思想就是好

struct TreeNode* pruneTree(struct TreeNode* root){if(root==NULL){//空的返回return NULL;}root->left=pruneTree(root->left);//往下查root->right=pruneTree(root->right);//往下查
if(root->left==NULL&&root->right==NULL&&root->val==0){//发现是0且是根节点,直接变成nullreturn NULL;}return root;
}

可以删除的点就是为根节点,且值等于0,而且下面的节点先删了,上面的到就是根节点了,也是向下搜索

代码短就是爽,理解到位直接干废

no.3

力扣嘉年华上的 DIY 手工展位准备了一棵缩小版的 二叉 装饰树 root 和灯饰,你需要将灯饰逐一插入装饰树中,要求如下:

完成装饰的二叉树根结点与 root 的根结点值相同
若一个节点拥有父节点,则在该节点和他的父节点之间插入一个灯饰(即插入一个值为 -1 的节点)。具体地:
在一个 父节点 x 与其左子节点 y 之间添加 -1 节点, 节点 -1、节点 y 为各自父节点的左子节点,
在一个 父节点 x 与其右子节点 y 之间添加 -1 节点, 节点 -1、节点 y 为各自父节点的右子节点,
现给定二叉树的根节点 root ,请返回完成装饰后的树的根节点。
示例 1:

输入:
root = [7,5,6]

输出:[7,-1,-1,5,null,null,6]

解释:如下图所示,

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/KnLfVT
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

和上面的差不多的,判断是否要插入装饰,左节点不空就插入,右节点不空就插入一个

让当前节点的儿子等于新建的节点,新建的节点调用,自己使得下面的节点指向新建的装饰

struct TreeNode* expandBinaryTree(struct TreeNode* root){if(root==NULL){return NULL;}if(root->right==NULL&&root->left==NULL){return root;}struct TreeNode* roots1=(struct TreeNode*)malloc(sizeof(struct TreeNode));struct TreeNode* roots2=(struct TreeNode*)malloc(sizeof(struct TreeNode));if(root->left!=NULL){roots1->val=-1;roots1->left=expandBinaryTree(root->left);roots1->right=NULL;}if(root->right!=NULL){roots2->val=-1; roots2->left=NULL;roots2->right=expandBinaryTree(root->right);}if(root->left!=NULL){root->left=roots1;}if(root->right!=NULL){root->right=roots2;}return root;

但是千千万万注意逻辑顺寻 ,不要搞错了,有课逻辑就完全的ok了

no.4

剑指 Offer 55 - II. 平衡二叉树

难度简单354收藏分享切换为英文接收动态反馈

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

示例 1:

给定二叉树 [3,9,20,null,null,15,7]

    3/ \9  20/  \15   7

返回 true 。

示例 2:

给定二叉树 [1,2,2,3,3,null,null,4,4]

       1/ \2   2/ \3   3/ \4   4

返回 false 。

限制:

  • 0 <= 树的结点个数 <= 10000

看了一会想想了想,才相信确实是求高度,和昨天的好像是一毛一样的呀,我试着我把代码,拿来搞了一下额,直接过了

bool isBalanced(struct TreeNode* root){int l=1;dfs(root,&l);if(l==1)return true;elsereturn false;
}
int max(int a,int b){if(a>b)return a;elsereturn b;}int dfs(struct TreeNode* root,int* l){if(root==NULL){return 0;}int ll=dfs(root->left,l)+1;int r=dfs(root->right,l)+1;if(abs(ll-r)>1){*l=0;}return max(ll,r);}

还来一句求高度,你会了吗?简单的递归思想 

no.5

剑指 Offer 26. 树的子结构

难度中等741收藏分享切换为英文接收动态反馈

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)

B是A的子结构, 即 A中有出现和B相同的结构和节点值。

例如:
给定的树 A:

     3
    / \
   4   5
  / \
 1   2

给定的树 B:

   4 
  /
 1

返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。

示例 1:

输入:A = [1,2,3], B = [3,1]
输出:false

示例 2:

输入:A = [3,4,5,1,2], B = [4,1]
输出:true

限制:

0 <= 节点个数 <= 10000

我的思想是,找了一点与节点的值相同就往下查,动态的遍历,左和右边的遍历都是对的就可以修改false,但是没有过,报错的样例,我自己运行了答案是对的

无语了

bool b=false;bool dfs(struct TreeNode* A, struct TreeNode* B){if(B==NULL){return true;}if(A==NULL){return false;}if(B->val==A->val&&b==false){bool r=dfs(A->right,B->right);bool l=dfs(A->left,B->left);if(r==true&&l==true){b=true;return true;}else{b=false;return false;}}if(A->left!=NULL)dfs(A->left,B);if(A->right!=NULL)dfs(A->right,B);return false;
}bool isSubStructure(struct TreeNode* A, struct TreeNode* B){dfs(A,B);
if(B==NULL){return false;
}return b; }

搜索到底向上返回bool,一直是true答案就会是true,但是遍历得到了0,那就往上返回的就是0

就算变成了true也会变成false,而且是找的了相等才会往下遍历 ,而且要是查到B为NULL那就是true 我觉得完全是对的,可以样例不让过,还给的神奇的样例.

ok今天完结哈哈!

相关文章:

树的刷题,嗝

今天忘记带本子了,就没有学习java了,于是一心刷题,好烦遇到了两个奇怪的题目,我没跟题解写的,但是我是没想到奇怪的样例. no.1 617. 合并二叉树 难度简单1221收藏分享切换为英文接收动态反馈 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中…...

举个栗子~Tableau 技巧(253):让筛选器只显示全部以及需要的类别

用户反馈了一个需求&#xff1a;我的业务数据有很多类别&#xff0c;但其实经常查看的只有几个&#xff0c;Tableau 筛选器能不能设置一下&#xff0c;只显示全部和经常查看的那几个类别&#xff1f; 这个是可以实现的&#xff01;如下示例&#xff0c;数据类别有&#xff1a;…...

服务器温度过高告警

今天巡检一套rac环境&#xff0c;发现节点二上有Error字样&#xff0c;逐行看完细节是服务器温度过高导致的&#xff0c;半夜又没啥业务的&#xff0c;查看硬件也没任何告警&#xff0c;哎&#xff0c;某品牌的品控确实越来越烂&#xff0c;log一下 Mar 21 02:53:21 hydb1 ker…...

反垃圾邮件产品测试评价方法示意图

声明 本文是学习信息安全技术 反垃圾邮件产品技术要求和测试评价方法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 反垃圾邮件产品测试评价方法 测试环境 反垃圾邮件产品的典型测试环境如图1所示。 图1 反垃圾邮件产品典型测试环境示意图 测试设…...

基于vfw的局域网语音聊天室系统源码论文

语音视频聊天 UDP套接字的运用 在实现语音视频聊天时,采用的是基于UDP套接字的点对点模式,而UDP面向的是无连接的数据服务,其套接字的使用如图10所示。 图10 UDP套接字的使用 视频的捕获 利用VFW接口&#xff0c;视频捕获可以分为以下几个步骤&#xff1a; 建立视频采集窗口…...

GoogleTest : 测试框架(单元测试)

GoogleTest googletest: GoogleTest - Google Testing and Mocking Framework googletest 是一个由 Google 的测试技术团队开发的测试框架&#xff0c;它考虑到了谷歌的特定需求和限制。无论你使用的是 Linux、Windows 还是 Mac&#xff0c;只要你编写 C 代码&#xff0c;goo…...

商业银行财富管理“智能原生”能力呈阶梯化,AI助力商业模式趋向多元化发展

易观&#xff1a;金融业的财富管理从经营角度来看&#xff0c;是“客户与渠道管理场景运营产品研发”三位一体共同构建以客户为中心&#xff0c;数据驱动的业务经营体系。其中&#xff0c;“客户与渠道管理”是将客户利益作为核心目标&#xff0c;通过升级用户体验、客户全生命…...

2022年中国云市场份额:阿里云腾讯云下降

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 4月23日&#xff0c;IDC发布《中国公有云服务市场(2022下半年)跟踪》&#xff0c;占据前四的分别为阿里云(40.6%)、华为云(11.0%)、腾讯云(11.0%)、中国电信(8.7%)。咱们说重点&#xff0c;如下图所…...

Redis入门学习笔记【二】Redis缓存

目录 一、Redis缓存 二、Redis使用缓存遇到的问题 2.1 数据一致性 2.2缓存雪崩 2.3 缓存穿透 2.4 缓存击穿 一、Redis缓存 数据缓存是Redis最重要的一个场景&#xff0c;为缓存而生&#xff0c;在springboot中&#xff0c;一般有两种使用方式&#xff1a; 直接通过RedisT…...

go1.20环境安装以及beego框架配置

打开网址下载安装包选择对应安装包来下载安装(个人是windows&#xff0c;下载的1.20.3版本) 默认情况下会安装在C盘&#xff0c;但是我安装在了D盘目录 根据安装提示一步步next&#xff0c;直至完成 go get 在1.18版本之后就弃掉了&#xff0c;换成了install 配置自己的work…...

vue---组件逻辑复用方法:Mixin/HOC/Renderless组件

目录 1、Mixin 2、HOC 3、Renderless组件 下文通过表单校验来分别讲解Mixin/HOC/Renderless组件这三种方式。 1、Mixin 通过mixin将一个公用的validate函数同步到每一个组件中去 mixin使用详细介绍见&#xff1a;vue---mixin混入_maidu_xbd的博客-CSDN博客一个混入对象可…...

阳光万里,祝你上岸——免统考在职研究生

什么是在职研究生 在职研究生&#xff0c;是国家计划内&#xff0c;以在职人员身份&#xff0c;部分时间在职工作&#xff0c;部分时间在校学习的研究生教育的一种类型。在职攻读硕士方式有三种&#xff1a; 1.双证非全日制研究生&#xff1a;为普通高等教育研究生学历&#x…...

大孔树脂型号,A-722,ADS500,ADS600,ADS750,ADS800

一、产品介绍 基于吸附功能的聚苯乙烯特种树脂 Tulsimer ADS-600 是一款没有离子官能基的&#xff0c;由交联聚苯乙烯合成的功能强大的吸附型树脂。 Tulsimer ADS-600 主要应用于水溶液中吸附酚及其化合物&#xff0c;氯代烃等含氯物质&#xff0c;表面活性剂&#xff0…...

MATLAB在逐渐被Python淘汰吗?

Python和MATLAB都是常用的科学计算工具&#xff0c;但是它们有很多不同之处。 Python是一种通用编程语言&#xff0c;而MATLAB主要是用来做数值计算的。Python的基本数据类型和一般的编程语言一样普遍&#xff0c;但是离开了Numpy这个包&#xff0c;就不再有数组或者矩阵的数据…...

黑盒测试过程中【测试方法】讲解1-等价类,边界值,判定表

在黑盒测试过程中&#xff0c;有9种常用的方法&#xff1a;1.等价类划分 2.边界值分析 3.判定表法 4.正交实验法 5.流程图分析 6.因果图法 7.输入域覆盖法 8.输出域覆盖法 9.猜错法 我们一般用第1种和第2种方法最多。此处简单介绍一下这两种方法&#xff0c;详细介绍其…...

函数栈帧的创建和销毁

文章目录 main函数栈帧的创建为什么局部变量的值是随机值函数是怎么传参的?传参的顺序是什么?函数调用结束是怎么返回的 main函数栈帧的创建 先在栈帧里面为main函数开辟出一块空间,且这块空间由两个寄存器esp和ebp来进行维护,当在调用另一个函数时这两个寄存器就去维护为这…...

测试Ocr工具IronOCR(续:编写图片圈选程序)

上一篇文章学习了IronOCR的基本用法之后&#xff0c;计划做一个加载本地图片后&#xff0c;从图片中圈选某一位置的文字&#xff0c;然后调用IronOCR识别圈选区域文本的程序。本文实现从本地加载图片并完成圈选的功能。   主要的功能包括以下几点&#xff1a;   1&#xff…...

React之Redux的使用

文章目录 Redux 介绍概述Redux 是什么&#xff1f;为什么要使用 Redux&#xff1f;我什么时候应该使用 Redux&#xff1f;Redux 库和工具React-ReduxRedux ToolkitRedux DevTools 扩展 Redux 术语和概念State 管理不可变性 Immutability术语ActionAction CreatorReducerReducer…...

数据库系统概论--第五章课后习题

1.什么是数据库的完整性&#xff1f; 答&#xff1a;数据库的完整性是指数据的正确性和相容性。 2. 数据库的完整性概念与数据库的安全性概念有什么区别和联系&#xff1f; 答&#xff1a; 数据的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中存…...

小程序开发费用估算:如何控制项目成本?

在当今数字化的时代&#xff0c;小程序已经成为了很多企业和个人开展业务的重要手段。小程序的开发需要耗费时间和资源&#xff0c;因此在项目初期&#xff0c;了解预计的开发费用是非常重要的。本文将详细介绍如何估算小程序开发费用以及如何控制项目成本。 小程序开发费用 …...

【22】linux进阶——文本处理工具:cut、awk、sed

大家好&#xff0c;这里是天亮之前ict&#xff0c;本人网络工程大三在读小学生&#xff0c;拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识&#xff0c;希望能提高自己的技术的同时&#xff0c;也可以帮助到大家 另外其它专栏请关注&#xff1a; 锐捷数通实验&…...

Web3D包装生产线 HTML5+Threejs(webgl)开发

生产线三维可视化解决方案就是通过物联网、虚实联动和三维建模等先进技术&#xff0c;以一个3D立体模型展现出来&#xff0c;可以让我们很直观的看到生产线的运作以及对数据的监控。3D运用数据孪生技术可以让工业3D物联网管理系统的界面变得非常的简单易看&#xff0c;并且能够…...

Docker数据管理

目录 一、数据管理方式 1、数据卷 在宿主机上写入数据&#xff0c;传到容器 2、数据卷容器 二、容器互联 一、数据管理方式 用户在使用Docker的过程中&#xff0c;往往需要能查看容器内应用产生的数据&#xff0c;或者需要把容器内的数据进行备份&#xff0c;甚至多…...

在PowerBuilder中更改窗口继承

在PowerBuilder中更改窗口继承 PowerBuilder是Sybase公司的独资子公司PowerSoft推出的应用于客户机/服务器体系结构下的应用程序开发工具,也是一种面向对象的图形化交互式开发工具。PowerBuilder 以其简洁高效的集成开发环境、 强大的数据窗口技术、几乎无所不能的数据库访问…...

CS:APP 第7章链接分步编译(cpp/cc1/as/ld)遇到的问题

环境 WSL Ubuntu 22.04.2 LTS gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 问题 问题一 cc1 命令找不到 cc1 命令在 /usr/lib/gcc/x86_64-linux-gnu/11/cc1 里&#xff0c;注意不同操作系统等可能 cc1 的位置不一样&#xff0c;可以使用 find 或者 locate 命令搜索。 通过下…...

Jsp+sql智能道路交通信息管理系统的设计与实现(论文+系统+开题报告+答辩PPT+外文翻译)

伴随着社会经济的发展&#xff0c;交通在人们经济和社会活动中扮演着越来越重要的角色。因而&#xff0c;交通管理的水平和质量就和我们的日产生活紧密相连&#xff0c;并且直接影响着投资的环境和城市的面貌。因此&#xff0c;每个城市都做了很多关于改善交通和发展智能交通系…...

自动化工具 WEB 自动化工具

背景 使用自动化测试框架编写用例的时候&#xff0c;维护元素信息以及脚本较为麻烦。对应新手来说&#xff0c;编写脚本的能力有限&#xff0c;使用工具会更容易入手。最重要的是可视化操作让我觉得体验舒服。 演示地址 地址&#xff1a;hippo 账号&#xff1a;test 密码&am…...

AutoGPT 安装指南,使用避坑要点

最近&#xff0c; AIGC 中最火的可能就当属于 AutoGPT 了吧&#xff0c;首先简单介绍一下AutoGPT 背景 AutoGPT 是基于 ChatGPT API 接口开发&#xff0c;项目首推 GPT-4 模型&#xff0c;但 OpenAI 账号 API 只有 gpt-3.5-turo 权限同样也可以使用。 项目在 github 上获取的…...

低调且强大——JNPF低代码平台

前言 先说说很多人为什么要用低代码平台。大部分的反馈是“懒”&#xff0c;其次就是后台管理这东西吧&#xff0c;来来回回就那些东西&#xff0c;查询/表单/表格/弹窗之类的&#xff0c;加上一些增删改查的逻辑。很多人表示&#xff0c;呆过的公司好几家了&#xff0c;后管的…...

《商用密码应用与安全性评估》第二章政策法规2.4商用密码应用安全性评估工作

商用密码应用安全性评估体系发展历程 第一阶段&#xff1a;制度奠基期&#xff08;2007年11月至2016年8月&#xff09; 第二阶段&#xff1a;再次集结期&#xff08;2016年9月至2017年4月&#xff09; 第三阶段&#xff1a;体系建设期&#xff08;2017年5月至2017年9月&…...