力扣面试经典题之二叉树
104. 二叉树的最大深度
简单
给定一个二叉树
root,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:3示例 2:
输入:root = [1,null,2] 输出:2提示:
- 树中节点的数量在
[0, 104]区间内。-100 <= Node.val <= 100/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ int han(struct TreeNode *root) {if(root==NULL)return 0;int nums=0;nums=fmax(nums,han(root->left)+1);nums=fmax(nums,han(root->right)+1);return nums; }int maxDepth(struct TreeNode* root){if(root==NULL)return 0;return han(root); }
100. 相同的树
简单
给你两棵二叉树的根节点
p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 1:
输入:p = [1,2,3], q = [1,2,3] 输出:true示例 2:
输入:p = [1,2], q = [1,null,2] 输出:false示例 3:
输入:p = [1,2,1], q = [1,1,2] 输出:false提示:
- 两棵树上的节点数目都在范围
[0, 100]内-104 <= Node.val <= 104/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool pan(struct TreeNode* p, struct TreeNode* q) {while(1){if(q==NULL&&p==NULL)return true;if(q==NULL||p==NULL)return false;if(q->val!=p->val){return false;}return pan(p->left,q->left)&&pan(p->right,q->right);}return true; }bool isSameTree(struct TreeNode* p, struct TreeNode* q){return pan( p, q); }
226. 翻转二叉树
简单
给你一棵二叉树的根节点
root,翻转这棵二叉树,并返回其根节点。示例 1:
输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2:
输入:root = [2,1,3] 输出:[2,3,1]示例 3:
输入:root = [] 输出:[]提示:
- 树中节点数目范围在
[0, 100]内-100 <= Node.val <= 100/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ void Traversal(struct TreeNode* root) {if(root==NULL){return; }//左右子节点交换位置//自上而下struct TreeNode* temp;temp = root->left;root->left = root->right;root->right = temp;//左Traversal(root->left);//右Traversal(root->right); }struct TreeNode* invertTree(struct TreeNode* root) {Traversal(root);return root;}
101. 对称二叉树
简单
给你一个二叉树的根节点
root, 检查它是否轴对称。示例 1:
输入:root = [1,2,2,3,4,4,3] 输出:true示例 2:
输入:root = [1,2,2,null,3,null,3] 输出:false提示:
- 树中节点数目在范围
[1, 1000]内-100 <= Node.val <= 100/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool pan(struct TreeNode *q,struct TreeNode *p) {if(q==NULL&&p==NULL)return true;if(q==NULL||p==NULL)return false;if(q->val!=p->val)return false;return pan(q->left,p->right)&&pan(q->right,p->left); }bool isSymmetric(struct TreeNode* root){return pan(root->left,root->right); }
105. 从前序与中序遍历序列构造二叉树
中等
给定两个整数数组
preorder和inorder,其中preorder是二叉树的先序遍历,inorder是同一棵树的中序遍历,请构造二叉树并返回其根节点。示例 1:
输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 输出: [3,9,20,null,null,15,7]示例 2:
输入: preorder = [-1], inorder = [-1] 输出: [-1]提示:
1 <= preorder.length <= 3000inorder.length == preorder.length-3000 <= preorder[i], inorder[i] <= 3000preorder和inorder均 无重复 元素inorder均出现在preorderpreorder保证 为二叉树的前序遍历序列inorder保证 为二叉树的中序遍历序列/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ int pSize; int iSize;//自上往下void bt(struct TreeNode* root,int* preorder,int startp, int preorderSize, int* inorder,int starti, int inorderSize) {if(starti>inorderSize||startp>preorderSize||preorderSize>=pSize||inorderSize>=iSize){free(root);return;}root->val=preorder[startp];int i=starti;for(;i<inorderSize;i++){if(preorder[startp]==inorder[i]){break;}}if(!((starti)>(i-1)||(startp+1)>(i-starti+startp)||(i-starti+startp)>=pSize||(i-1)>=iSize)){root->left=(struct TreeNode*)calloc(1, sizeof(struct TreeNode));bt(root->left,preorder,startp+1,i-starti+startp,inorder,starti,i-1);} if(!((i+1)>inorderSize||(i-starti+startp+1)>preorderSize||preorderSize>=pSize||inorderSize>=iSize)){root->right=(struct TreeNode*)calloc(1, sizeof(struct TreeNode));bt(root->right,preorder,i-starti+startp+1,preorderSize,inorder,i+1,inorderSize); }} struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize) {struct TreeNode* root = (struct TreeNode*)calloc(1, sizeof(struct TreeNode));if(root==NULL){printf("错误\n");}pSize=preorderSize;iSize=inorderSize;bt(root,preorder,0,preorderSize-1,inorder,0,inorderSize-1);return root;}
相关文章:
力扣面试经典题之二叉树
104. 二叉树的最大深度 简单 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入…...
图灵日记之java奇妙历险记--数据类型与变量运算符
目录 数据类型与变量字面常量数据类型变量语法格式整型变量浮点型变量字符型变量希尔型变量类型转换自动类型转换(隐式)强制类型转换(显式) 类型提升不同数据类型的运算小于4字节数据类型的运算 字符串类型 运算符算术运算符关系运算符逻辑运算符逻辑与&&逻辑或||逻辑非…...
PhysX——源码编译
从git下载源码 git主页 https://github.com/NVIDIA-Omniverse/PhysXclone地址 https://github.com/NVIDIA-Omniverse/PhysX.git源码编译 运行PhysX需要两个编译器的支持,CMake 3.12 或以上版本以及Python 2.7.6 版本 进入工程的 physx 目录,运行generate…...
小鹅通基于 TSE 云原生 API 网关的落地实践
导语 2023腾讯全球数字生态大会已于9月7-8日完美落幕,40专场活动展示了腾讯最新的前沿技术、核心产品、解决方案。 微服务与消息队列专场,我们邀请到了小鹅通的基础架构组负责人黄徐震为我们带来了《小鹅通基于 TSE 云原生网关的落地实践》的精彩演讲。…...
Postgresql处理JSON类型中替换某个属性值问题
一、问题描述 使用postgresql对json的特性使用sql批量处理json中某个属性的值 结构如下: {"id": 1,"parentId": 123,"globalParameters": [{"value": "date","boardId": 123,"canReName":…...
@德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
德人合科技 | 天锐绿盾加密软件是一款全面保障企业电脑数据和安全使用的加密软件 PC端访问地址:www.drhchina.com 它的功能包括但不限于: 实时操作日志:可以实时详细地记录所有终端的操作日志,包括终端上窗口标题的变换、程序的…...
android 使用GSON 序列化对象出现字段被优化问题解决方案
一、问题描述 有以下结构: public class NativeParam<T> {private T data;public NativeParam(T data) {this.data data;}public T getData() {return data;}public void setData(T data) {this.data data;} };NativeParam<String> data "1.0…...
进入不了Bios?进入Bios的方法都在这了,肯定能进!
前言 有些小伙伴可能在重装系统的第一步就卡住了,接着就放弃了。哇哈哈哈啊,先让小白笑会~ 根据小白十二年的装机经验,不同主板进入Bios的时候有不同的姿势。也许要蹲着大喊Bios才能进入呢?要不试试? 好了…...
手把手教你基于 FastGPT 搭建个人知识库
前言 大家好,我是潇潇雨声。我发现在使用 GPT 时,尽管它能够生成一些小红书文案和日志,但内容常常显得空洞缺乏深度。今天我想分享一个解决这个问题的方法,那就是基于开源项目 FastGPT[1]。 我们可以通过向 GPT 提供一些有针对性的…...
gitee 怎么添加SSH密钥
要在Gitee上添加SSH密钥,请按照以下步骤操作: 登录到Gitee账户并导航到您要添加SSH密钥的存储库页面。点击页面右上方的“设置”按钮。在设置页面中,选择“SSH公钥”选项卡。点击“添加密钥”按钮。在弹出的对话框中,输入密钥标题…...
万界星空开源MES/注塑MES/开源注塑MES/免费MES/MES源码
一、系统概述: 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES、好看的数据大屏、功能齐全开源mes. 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理,车间基础数据管理&…...
macOS 开发 - MASShortcut
文章目录 关于 MASShortcut项目结构 快速使用源码学习检测是否有热键冲突处理 Event macOS 开发交流 秋秋群:644096295,V : ez-code 关于 MASShortcut MASShortcut 是一款快捷键管理工具,替代和兼容 ShortcutRecorder github : https://git…...
【大数据面试】Flink面试题附答案
目录 ✅Flink介绍、特点、应用场景 ✅Flink与Spark Streaming的区别 ✅Flink有哪些部署模式 ✅Flink架构 ✅怎么设置并行度? ✅什么是算子链? ✅什么是任务槽(Task Slots)? ✅任务槽和并行度的关系 ✅Flink作…...
语音识别之百度语音试用和OpenAiGPT开源Whisper使用
0.前言: 本文作者亲自使用了百度云语音识别,腾讯云,java的SpeechRecognition语言识别包 和OpenAI近期免费开源的语言识别Whisper(真香警告)介绍了常见的语言识别实现原理 1.NLP 自然语言处理(人类语言处理) 你好不同人说出来是不同的信号表示 单位k 16k16000个数字表示 1秒160…...
Rust报错:the msvc targets depend on the msvc linker but `link.exe` was not found
当我在我的 windows 电脑上安装 rust,然后用 cargo 新建了一个项目后,cargo run 会报错: error: linker link.exe not found| note: program not foundnote: the msvc targets depend on the msvc linker but link.exe was not foundnote: p…...
2312llvm,04后端上
后端 后端由一套分析和转换趟组成,任务是生成代码,即把LLVM中间(IR)转换为目标代码(或汇编). LLVM支持广泛目标:ARM,AArch64,Hexagon,MSP430,MIPS,NvidiaPTX,PowerPC,R600,SPARC,SystemZ,X86,和XCore. 所有这些后端共享一套,按通用API方法抽象后端任务的目标无关生成代码的一部…...
springboot学习笔记(五)
MybatisPlus进阶 1.MybatisPlus一对多查询 2.分页查询 1.MybatisPlus一对多查询 场景:我有一个表,里面填写的是用户的个人信息(姓名,生日,密码,用户ID)。我还有一个表填写的订单信息&#x…...
文件上传——后端
文件上传流程: 创建阿里云OSS(对象存储服务)的bucket 登录阿里云,并完成实名认证,地址:https://www.aliyun.com/. 可以通过搜索,进入以下页面: 点击立即使用后: 点击…...
虾皮开通:如何在虾皮上开通跨境电商店铺
在当今的数字时代,跨境电商已经成为了全球贸易的一种重要形式。虾皮(Shopee)作为东南亚市场份额第一的跨境电商平台,为卖家提供了广阔的销售机会。如果您想在虾皮上开通店铺,以下是一些步骤和注意事项供您参考。 先给…...
C语言—每日选择题—Day60
明天更新解析 第一题 1. 下列for循环的循环体执行次数为() for(int i 10, j 1; i j 0; i, --j) A:0 B:1 C:无限 D:以上都不对 答案及解析 A for循环的判断条件是 i j 0;赋值语句做判断条件…...
告别配置噩梦:OpCore-Simplify让黑苹果EFI构建效率提升90%
告别配置噩梦:OpCore-Simplify让黑苹果EFI构建效率提升90% 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹果配置一直是许多技术爱好者…...
JASP统计分析软件:开源数据分析的技术实践指南
JASP统计分析软件:开源数据分析的技术实践指南 【免费下载链接】jasp-desktop JASP aims to be a complete statistical package for both Bayesian and Frequentist statistical methods, that is easy to use and familiar to users of SPSS 项目地址: https://…...
C++ Move 构造函数性能影响
C Move构造函数性能影响探析 在现代C编程中,Move构造函数是提升性能的重要工具之一。它通过“窃取”临时对象的资源而非深拷贝,显著减少了不必要的内存分配和数据复制。Move构造函数的性能影响并非总是显而易见,其实际效果取决于多种因素。本…...
PMSM无感控制中滑模观测器的相位补偿与抖振优化
1. 滑模观测器在PMSM无感控制中的核心作用 永磁同步电机(PMSM)的无位置传感器控制技术中,滑模观测器(SMO)扮演着关键角色。这种控制方式不需要物理位置传感器,而是通过算法实时估算转子位置和速度。我在实…...
【方案、开源】从零到国一:空地协同消防无人机系统全栈技术解析
1. 空地协同消防无人机系统设计思路 第一次接触这个项目时,我和很多同学一样感到无从下手。直到把整个系统拆解成几个核心模块,思路才逐渐清晰。这个系统的关键在于"空地协同"四个字,简单说就是让无人机和小车像两个配合默契的消防…...
AutoGLM-Phone-9B开箱即用:跟着这篇,快速部署你的移动端大模型
AutoGLM-Phone-9B开箱即用:跟着这篇,快速部署你的移动端大模型 1. AutoGLM-Phone-9B简介 1.1 什么是AutoGLM-Phone-9B AutoGLM-Phone-9B是一款专为移动端优化的多模态大语言模型,它能够同时处理视觉、语音和文本三种输入方式。这个模型最大…...
CogVideoX-2b CSDN专用版:5分钟部署你的本地AI视频导演
CogVideoX-2b CSDN专用版:5分钟部署你的本地AI视频导演 1. 从想法到画面,只差一个启动按钮 想象一下这样的场景:你脑子里闪过一个绝妙的视频创意——也许是“一只戴着宇航员头盔的柴犬在月球表面蹦跳”,也许是“赛博朋克都市的雨…...
C++ 编译器优化选项详解
C 编译器优化选项详解 在C开发中,编译器优化是提升程序性能的关键手段之一。通过合理配置优化选项,开发者可以在不修改代码逻辑的情况下,显著提高程序的运行效率,减少资源消耗。本文将深入探讨C编译器的优化选项,帮助…...
SiameseUIE在CSDN社区的应用:技术文章智能分析
SiameseUIE在CSDN社区的应用:技术文章智能分析 1. 引言 CSDN社区每天都有成千上万的技术文章发布,涵盖了从编程语言到人工智能的各个领域。面对如此庞大的内容量,如何快速准确地理解每篇文章的核心内容、自动生成标签、进行智能分类&#x…...
SPI Flash时序参数详解:如何用Synopsys VIP验证Micron芯片的HOLD时序
SPI Flash时序验证实战:Synopsys VIP在Micron芯片HOLD时序分析中的应用 当硬件验证工程师面对SPI Flash芯片时,时序参数的精确验证往往是项目成败的关键。Micron作为主流存储芯片供应商,其SPI Flash产品广泛应用于嵌入式系统和FPGA设计中&…...








