数据结构:二叉树—面试题(一)
目录
1、相同的树
2、另一棵树的子树
3、翻转二叉树
4、平衡二叉树
5、对称二叉树
6、二叉树遍历
7、二叉树的分层遍历
1、相同的树
习题链接https://leetcode.cn/problems/same-tree/description/https://leetcode.cn/problems/same-tree/description/
描述:
给你两棵二叉树的根节点 p
和 q
,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
解题思路
根据题意,他要我们判断这两棵树是否相同,我们知道要判断两棵树是否相同,就是要判断树的结构和对应结点的内容是否相同。
首先我们要来看,给我们的两棵树是否是一棵树有结点,一棵树没有结点,如果是这样的话,我们就认为这两棵树不相同,同时如果这两颗树的根节点都为空,那么我们就认为,这两棵树相同。
经历了这两个条件后,此时的这两颗树一定是都存在结点,这时我们在判断此时的根节点值是否相同,如果不同,就是不相同的树,如果相同,我们就继续往下走,判断对应的左子树和右子树是否相同,在递归的形势下,传入两棵树根的左边结点作为新的根节点,进行判断,同理右边也是一样。在这种情况下完成对两棵树的结构和内容的判断。
完整代码
class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if(p != null && q == null || p == null && q != null){return false;}if(p == null && q ==null){return true;}if(p.val != q.val){return false;}return isSameTree(p.left,q.left) && isSameTree(p.right ,q.right);}
}
2、另一棵树的子树
习题链接https://leetcode.cn/problems/subtree-of-another-tree/https://leetcode.cn/problems/subtree-of-another-tree/
描述:
给你两棵二叉树 root
和 subRoot
。检验 root
中是否包含和 subRoot
具有相同结构和节点值的子树。如果存在,返回 true
;否则,返回 false
。
二叉树 tree
的一棵子树包括 tree
的某个节点和这个节点的所有后代节点。tree
也可以看做它自身的一棵子树。
解题思路
根据题意,他是要我们判断给出的两棵树中一棵是否为另一棵的子树,而这个子树是包含某个结点开始和他所有的后代的,这样来看其实就是判断一棵树的子树和他给出的另一棵树是否相同。(注意:如果两棵树从根节点开始就是相同的,我们也认为他符合题意)
首先,我们从根节点开始进行判断,我们要先判断我们的根节点是否为空,因为在下面我们是要有递归实现的总有一次我们会递归到为空的时候,这就代表我们此时的根节点为空,而我们要判断的subRoot这棵树却不为空,这就代表了以此时结点为根节点的树是和我们要判断的树是不同的,因此我们要返回false.而我们判断的方法就是我们上面写的题相同的树,因此我们将根节点传isSameTree进行判断。
当我们判断完根结点后我们要判断跟的左子树,因此我们要将根的左结点传入进行递归,判断完再判断右树,如果都不存在就返回false;
完整代码
class Solution {public boolean isSubtree(TreeNode root, TreeNode subRoot) {if(root == null){return false;}if(isSameTree(root,subRoot)){return true;}if(isSubtree(root.left,subRoot)){return true;}if(isSubtree(root.right,subRoot)){return true;}return false;}public boolean isSameTree(TreeNode p, TreeNode q) {if(p == null && q != null || p != null && q == null){return false;}if(p == null && q == null){return true;}if(p.val != q.val){return false;}return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);}
}
3、翻转二叉树
习题链接https://leetcode.cn/problems/invert-binary-tree/description/https://leetcode.cn/problems/invert-binary-tree/description/
描述:给你一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。
解题思路
根据图示我们能发现这道题就是让我们将根的左右结点进行交换,说到交换这就简单了,想必大家都理解,而他是要交换整棵树因此我们交换完根节点后,还要交换他左子树的结点和右子树的结点,因此我们可以利用递归传入根的左右结点,再继续往下找左右结点进行交换。
完整代码
class Solution {public TreeNode invertTree(TreeNode root) {if(root == null){return root;}TreeNode tmp = root.left;root.left = root.right;root.right = tmp;invertTree(root.left);invertTree(root.right);return root;}
}
4、平衡二叉树
习题链接https://leetcode.cn/problems/balanced-binary-tree/description/https://leetcode.cn/problems/balanced-binary-tree/description/
描述:给定一个二叉树,判断它是否是 平衡二叉树
解题思路
首先我们要先来了解什么是平衡二叉树,所谓平衡二叉树就是,一个根节点左边的长度和右边的长度的差值要小于等于1.
而根据对平衡二叉树的了解,我们发现我们应该去求他左子树和右子树的长度,让他们相减。
关于二叉树长度的计算我们再二叉树中已经进行了讲解,大家可以去看看。数据结构:二叉树
因为我们要判断整棵树是否为平衡二叉树,因此我们要从根结点判断是否为平衡二叉树,还要对子树的子树进行平衡二叉树的判断,如果都是平衡二叉树,我们就认为他是平衡二叉树,对于这样的判断我们就要用到递归的方式来进行了。
因此我们获得根结点的左右子树长度进行相减并且利用递归传入根的左结点和右结点进行子树的子树判断
完整代码
class Solution {public boolean isBalanced(TreeNode root) {if(root == null){return true;}int leftMax = getH(root.left);int rightMax = getH(root.right);return Math.abs(leftMax - rightMax) <=1 && isBalanced(root.left) && isBalanced(root.right);}public int getH(TreeNode root){if(root == null){return 0;}int leftH = getH(root.left);int rightH = getH(root.right);return Math.max(leftH,rightH)+1;}
}
5、对称二叉树
习题链接https://leetcode.cn/problems/symmetric-tree/description/https://leetcode.cn/problems/symmetric-tree/description/
描述:给你一个二叉树的根节点 root
, 检查它是否轴对称。
解题思路
这道题其实和我们第1题是相同的,我们还是判断是否相同,只是从两棵树的判断,到了一棵树左右子树的判断,当时我们要注意因为他要判断是否为镜像,因此,我们判断是否相同是要判断一棵子树的左边和另一棵子树的右边,一棵子树的右边和另一棵子树的左边是否结构相同内容相同
完整代码
class Solution {public boolean isSymmetric(TreeNode root) {if(root == null){return true;}return isSameTree(root.left,root.right);}public boolean isSameTree(TreeNode p ,TreeNode q){if(p != null && q == null || p == null && q != null ){return false;}if(p == null && q == null){return true;}if(p.val != q.val){return false;}return isSameTree(p.left,q.right) && isSameTree(p.right,q.left);}
}
6、二叉树遍历
习题链接https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId=60&&tqId=29483&rp=1&ru=/activity/oj&qru=/ta/tsing-kaoyan/question-rankinghttps://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId=60&&tqId=29483&rp=1&ru=/activity/oj&qru=/ta/tsing-kaoyan/question-ranking
描述:
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
输入描述:
输入包括1行字符串,长度不超过100。
输出描述:
可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。 每个输出结果占一行。
解题思路
根据题意,我们知道他是要我们根据先序遍历,建立一棵二叉树,再输出二叉树的中序遍历。
首先我们要根据先序遍历创建二叉树,在创建二叉树前我们要创建结点,因为二叉树是由一个个结点形成的。
创建完结点后,我们就要创建二叉树,我们知道先序遍历的顺序是:根左右,因此我们要先创建完左子树再创建右子树,那么什么时候我们停止创建左子树呢?
停止的时刻其实是当我们遇到空树的时候,而先序遍历给我们的空树就是“#”,因此只要我们没遇到“#”,就创建左子树,并让先序遍历往下走,遇到“#”了我们就停止,但依然让先序遍历往下走,并返回到上面一层,去创建右子树。
当右子树也遇到“#”了,我们就停止创建二叉树,但依然让先序遍历往下走,并返回到上面一层,此时左右子树都走完了,再返回上一层,去创建右子树,在这样不断的递归和返回就成功创建了二叉树。
当我们创建完二叉树后,接下来就是用中序遍历去打印了(左根右)
完整代码
import java.util.Scanner;
class TreeNode{char val;TreeNode left;TreeNode right;public TreeNode(char val){this.val = val;}
}
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static int i = 0;public static TreeNode createTree(String str){TreeNode root = null;if(str.charAt(i) != '#'){root = new TreeNode(str.charAt(i));i++;root.left = createTree(str);root.right = createTree(str);}else{i++;}return root;}public static void oread(TreeNode root){if(root == null){return;}oread(root.left);System.out.print(root.val + " ");oread(root.right);}public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseString str = in.nextLine(); TreeNode root = createTree(str);oread(root);}}
}
7、二叉树的分层遍历
习题链接https://leetcode.cn/problems/binary-tree-level-order-traversal/description/https://leetcode.cn/problems/binary-tree-level-order-traversal/description/
描述:
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
解题思路
这道题就是让我将二叉树由层序遍历输出,而层序遍历的方式我们再上一篇二叉树是已经进行了讲解大家可以去看看,数据结构:二叉树
而这道虽然仍是以层序遍历输出,但是他输出要求是同一层的放到一起输出。
因此我们可以在层序遍历的基础上再创建一个链表curList,然后再计算次数队列的长度,根据长度决定出队的个数,并让出队的元素放到链表curList中,并将此时出队的元素左右结点放入队列中,当这个循环结束了就代表上一个队列为空了,再将curList的值放入到list链表中,然后利用循环再判断此时的队列,再创建一个新的curList,重复上面的操作,这样就实现了同一层的放到一起输出
完整代码
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> list = new ArrayList<>();if(root == null){return list;}Queue<TreeNode> q = new LinkedList<>();q.offer(root);while(!q.isEmpty()){List<Integer> curList = new ArrayList<>();int size = q.size();while(size != 0){TreeNode cur = q.poll();curList.add(cur.val);if(cur.left != null){q.offer(cur.left);}if(cur.right != null){q.offer(cur.right);}size--;}list.add(curList); }return list;}
}
好了。今天的分享就到这里了,还请大家多多关注,我们下一篇再见!
相关文章:
数据结构:二叉树—面试题(一)
目录 1、相同的树 2、另一棵树的子树 3、翻转二叉树 4、平衡二叉树 5、对称二叉树 6、二叉树遍历 7、二叉树的分层遍历 1、相同的树 习题链接https://leetcode.cn/problems/same-tree/description/https://leetcode.cn/problems/same-tree/description/ 描述:…...
GPU算力平台|在GPU算力平台部署可图大模型Kolors的应用实战教程
文章目录 一、GPU算力服务平台GPU算力服务平台的概述 二、平台账号注册流程可图大模型Kolors的应用实战教程可图大模型的介绍可图大模型的应用场景可图大模型Kolors的部署步骤 一、GPU算力服务平台 GPU算力服务平台的概述 蓝耘GPU算力平台专为高性能计算设计,广泛…...
Linux探秘坊-------4.进度条小程序
1.缓冲区 #include <stdio.h> int main() {printf("hello bite!");sleep(2);return 0; }执行此代码后,会 先停顿两秒,再打印出hello bite,但是明明打印在sleep前面,为什么会后打印呢? 因为ÿ…...
Ansys Motor-CAD:IPM 电机实验室 - 扭矩速度曲线
各位电动机迷们,大家好: 在本博客中,我讨论了如何使用 Ansys Motor-CAD 通过 LAB 模块获取扭矩速度曲线。使用每安培最大扭矩电机控制策略,并涵盖恒定扭矩区域和恒定功率、磁通减弱区域。分析了高转子速度如何影响功率输出。 模型…...
关于事件捕获和事件冒泡的理解
我一直对事件捕获和事件冒泡是挺困惑的,好像理解了,但又感觉哪里不对。这篇文章打算深入探讨一些细节性的问题,更好的理解事件捕获和事件冒泡。 当我们点击的时候,浏览器的默认行为是怎么样的? 搞清楚这个非常的重要…...
如何使用HASH创建低交互式蜜罐系统
关于HASH HASH是一个用于创建和启动低交互蜜罐的框架,可以帮助广大研究人员轻松创建HTTP无关的低交互式软件蜜罐。 HASH 的主要理念是易于配置,能够灵活地模拟在 HTTP/HTTPs 上运行的任何软件。尽可能减少占用空间,避免被检测为蜜罐。 功能…...
vue3+vite+ts安装wangeditor富文本编辑器
需求: 实现粘贴,上传图片时本地渲染但并不实现上传功能,工具栏移除不需要的工具 安装方法看官网 安装 | wangEditor 封装子组件 wangEditor.vue <template><div><div style"border: 1px solid #ccc; margin-top: 10px"><Toolbar:editor&qu…...
PostIn教程-安装配置
PostIn是一款国产开源免费的接口管理工具,包含项目管理、接口调试、接口文档设计、接口数据MOCK等模块,支持常见的HTTP协议、websocket协议等,支持免登陆本地接口调试,同时可以对项目进行灵活的成员权限、消息通知管理等。 1、服务…...
SpringBoot读取配置优先级顺序是什么?
Spring Boot外部化配置详解 目录 引言Spring Boot外部化配置概述配置加载优先级配置加载顺序详解实际案例总结 引言 Spring Boot因其“开箱即用”的特性,极大地简化了Java应用的开发和部署过程。它通过外部化配置机制,允许开发者根据不同的环境&#x…...
群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].
群晖docker获取私有化镜像提示http: server gave HTTP response to HTTPS clien 问题描述 层级时间用户事件Information2023/07/08 12:47:45cxlogeAdd image from xx.xx.31.240:1923/go-gitea/gitea:1.19.3Error2023/07/08 12:47:48cxlogeFailed to pull image [Get "http…...
MySQL8【学习笔记】
第一章前提须知 1.1 需要学什么 Dbeaver 的基本使用SQL 语句:最重要的就是查询(在实战的时候,你会发现我们做的绝大部分工作就是 “查询”)MySQL 存储过程(利用数据库底层提供的语言,去进行业务逻辑的封装…...
汇编实验·子程序设计
一、实验目的: 1.掌握汇编中子程序编写方法 2.掌握程序传递参数的基本方法,返回值的方法。 3.掌握理解子程序(函数)调用的过程 二、实验内容 1.编写汇编语言子程序,实现C表达式SUM=X+Y的功能,具体要求: 1)函数的参数传递采用寄存器实现 2)函数的参数传递采用堆栈…...
EDI安全:2025年数据保护与隐私威胁应对策略
在数字化转型的浪潮中,电子数据交换(EDI)已成为企业间信息传递的核心基础设施。然而,随着数据规模的指数级增长和网络威胁的日益复杂化,EDI安全正面临前所未有的挑战。展望2025年,企业如何构建一套全面、高…...
Cloudpods是一个开源的Golang实现的云原生的融合多云/混合云的云平台,也就是一个“云上之云”。
Cloudpods是一个开源的Golang实现的云原生的融合多云/混合云的云平台,也就是一个“云上之云”。Cloudpods不仅可以管理本地的虚拟机和物理机资源,还可以管理多个云平台和云账号。Cloudpods隐藏了这些异构基础设施资源的数据模型和API的差异,对…...
C++小病毒-1.0勒索
内容供学习使用,不得转卖,代码复制后请1小时内删除,此代码会危害计算机安全,谨慎操作 在C20环境下,并在虚拟机里运行此代码! #include <iostream> #include <windows.h> #include <shellapi.h> #include <stdio.h> #include <fstream> #include…...
MySQL入门(数据库、数据表、数据、字段的操作以及查询相关sql语法)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
AIGC视频扩散模型新星:Video 版本的SD模型
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓,而慕尼黑大学同样不容小觑,…...
08-ArcGIS For JavaScript-通过Mesh绘制几何体(Cylinder,Circle,Box,Pyramid)
目录 概述代码实现1、Mesh.createBox2、createPyramid3、Mesh.createSphere4、Mesh.createCylinder 完整代码 概述 对于三维场景而言,二位的点、线、面,三维的圆、立方体、圆柱等都是比较常见的三维对象,在ArcGIS For JavaScript中我们知道点…...
在 Go 语言中如何高效地处理集合
文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...
Python的进程和线程
ref 讲个故事先 这就像一个舞台(CPU核心), 要供多个剧组演出多个剧目(进程), 剧目中有多个各自独立的角色(线程),有跑龙套的,有主角,第一…...
基于单片机的智能台灯设计
摘要: 方向和亮度,采用的是手动调节。而对于儿童来说,他们通常不知道如何调整以及调整到何种程度。本文设计了一款智能台灯,当有人的 台灯是用于阅读学习而设计使用的灯,一般台灯用的灯泡是白炽灯、节能灯泡以及市面上流行的护眼台灯,可以调节高度、光照的时候,可以根据…...
vue3案例:筛选部门、选择人员案例组件
可以控制可以选多人,或者只能选单人可以做部门筛选再选人,没有部门情景,直接显示全部人员,有输入框可以搜索人员 ✨一、实现功能 需求: 可以灵活控制,多选或者单选人员配合部门进行部门下的人员筛选 详细…...
Spring MVC:综合练习 - 深刻理解前后端交互过程
目录 1. Lombok 1.1 引入 lombok 依赖 1.1.1 通过 Maven 仓库引 lombok 依赖 1.1.2 通过插件引入 lombok 依赖 1.2 Data 1.3 其他注解 2. 接口文档 2.1 接口(api) 2.2 接口文档 3. 综合练习 - 加法计算器 3.1 定义接口文档 3.2 准备工作 - 前端代码 3.3 后端代码 …...
Debian常用命令
以下是完整的 Linux 命令大全,适用于 Debian、Ubuntu 及其衍生系统,涵盖系统管理、文件操作、磁盘管理、用户管理、网络调试、安全、进程管理等多个方面。 目录 基本命令关机与重启文件和目录管理文件搜索挂载文件系统磁盘空间管理用户和群组管理文件和…...
【FFmpeg】FLV 格式分析 ③ ( Tag Body 数据块体结构 - Vedio Data 视频数据 )
文章目录 一、Tag Body 数据块体结构 - Video Data 视频数据1、Vedio Data 视频数据 类型标识2、Vedio Data 视频数据 结构分析3、Composition Time Offset 字段涉及的时间计算4、AVC Packet Type 字段说明① AVC Sequence Header 类型② AVC NALU 类型③ AVC End of Sequence …...
开源鸿蒙开发者社区记录
lava鸿蒙社区可提问 Laval社区 开源鸿蒙项目 OpenHarmony 开源鸿蒙开发者论坛 OpenHarmony 开源鸿蒙开发者论坛...
MinIO的安装与使用
目录 1、安装MinIO 1.1 下载 MinIO 可执行文件 1.2 检查 MinIO 是否安装成功 1.3 设置数据存储目录 1.4 配置环境变量(可选) 1.5 编写启动的脚本 1.6 开放端口 1.7 访问 2、项目实战 2.1 引入依赖 2.2 配置yml文件 2.3 编写Minio配置类 2.4…...
【分布式日志篇】从工具选型到实战部署:全面解析日志采集与管理路径
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
Spring Boot/MVC
一、Spring Boot的创建 1.Spring Boot简化Spring程序的开发,使用注解和配置的方式开发 springboot内置了tomact服务器 tomact:web服务器,默认端口号8080,所以访问程序使用8080 src/main/java:Java源代码 src/main/resource:静态资源或配置文件,存放前端代码(js,css,html) s…...
uni-app连接EventSource
前言 uniapp默认是不支持event-source,这里是借助renderjs进行SSE连接 正文 引入event-source-polyfill 这里演示的是直接将代码下载到本地进行引入 下载地址 把里面的eventsource.min.js文件放到项目中的static文件夹 项目封装event-source.vue组件 <templ…...
[SCTF2019]babyre
[SCTF2019]babyre 一、查壳 无壳,64位 二、IDA分析 1.没有main,那就shifef12 点击: 再进: 都是花指令,所以要先解决花指令 三、解决花指令,得到完整的 main 往上面翻,注意看爆红的&#x…...
简洁实用的wordpress外贸模板
简洁、实用、大气的wordpress外贸模板,适合跨境电商搭建外贸B2B产品展示型网站。 简洁实用的wordpress外贸模板 - 简站WordPress主题简洁、实用、大气的wordpress外贸模板,适合跨境电商搭建外贸B2B产品展示型网站。https://www.jianzhanpress.com/?p828…...
每日一题 414. 第三大的数
414. 第三大的数 简单 class Solution { public:int thirdMax(vector<int>& nums) {int n nums.size();long first , second,third;first second third LONG_MIN ;bool find false;for(auto num : nums){if(num > first){ third second;second first…...
TVM框架学习笔记
TVM是陈天齐等人一个开源的深度学习编译器栈,用于优化和部署机器学习模型到各种硬件后端。它支持多种前端框架,如TensorFlow、PyTorch、ONNX等,并且可以在不同的硬件平台上运行,包括CPU、GPU和专用加速器。官方文档: Apache TVM Documentation — tvm 0.20.dev0 documenta…...
Codeforces Round 998 (Div. 3)
文章目录 EF E 原题链接 思路: 题目要求对于 G 中存在路径的两个点,在 F 中也必须存在路径,不是两个点存在直连的边。 两个点存在路径,说明俩个点在同一个连通块。我们用并查集来维护图的连通块。 最终的要求就是把 F 的并查集通…...
Vue.js 渐进式增强:如何逐步为传统项目注入活力
Vue.js 是一个渐进式框架,这意味着你可以将它逐步引入到现有项目中,而无需彻底重构。渐进式增强特别适合那些已经在使用传统服务器渲染框架(如 PHP、Django、Laravel)的项目,为它们增加动态交互功能。本篇教程将介绍如…...
【算法】经典博弈论问题——巴什博弈 python
目录 前言巴什博弈(Bash Game)小试牛刀PN分析实战检验总结 前言 博弈类问题大致分为: 公平组合游戏、非公平组合游戏(绝大多数的棋类游戏)和 反常游戏 巴什博弈(Bash Game) 一共有n颗石子,两个人轮流拿,每次可以拿1~m颗…...
【技术洞察】2024科技绘卷:浪潮、突破、未来
涌动与突破 2024年,科技的浪潮汹涌澎湃,人工智能、量子计算、脑机接口等前沿技术如同璀璨星辰,方便了大家的日常生活,也照亮了人类未来的道路。这一年,科技的突破与创新不断刷新着人们对未来的想象。那么回顾2024年的科…...
【0x06】HCI_Authentication_Complete事件详解
目录 一、事件概述 二、事件格式及参数 2.1. HCI_Authentication_Complete事件格式 2.2. Status 2.3. Connection_Handle 三、事件的生成于处理 3.1. 事件生成 3.2. 认证流程 3.2.1. 发送认证请求 3.2.2. 处理流程 3.2.3. 示例代码 四、应用场景 4.1. 设备配对与连…...
JS-Web API -day03
一、事件流 1.1 事件流与两个阶段说明 事件流 指的是事件完整执行过程中的流动路径 假设页面有个div标签,当触发事件时,会经历两个阶段,分别是捕获阶段、冒泡阶段 捕获阶段:Document - Element html - Elementbody - Element div…...
电子应用设计方案103:智能家庭AI浴缸系统设计
智能家庭 AI 浴缸系统设计 一、引言 智能家庭 AI 浴缸系统旨在为用户提供更加舒适、便捷和个性化的沐浴体验,融合了人工智能技术和先进的水疗功能。 二、系统概述 1. 系统目标 - 实现水温、水位和水流的精确控制。 - 提供多种按摩模式和水疗功能。 - 具备智能清洁…...
linux静态库+嵌套makefile
linux静态库嵌套makefile 文章目录 linux静态库嵌套makefile1、概述2、代码结构3、代码1)main.c2)主makefile3)fun.c4)func.h5)静态库makefile 4、运行效果1)在main.c目录下执行make2)到output目…...
AIP-127 HTTP和gRPC转码
编号127原文链接AIP-127: HTTP and gRPC Transcoding状态批准创建日期2019-08-22更新日期2019-08-22 遵守面向资源设计的API使用RPC进行定义,但面向资源设计框架允许这些API表现为整体上符合REST/JSON约定的接口。这一点很重要,可以帮助开发者利用现有知…...
代码随想录算法训练营day32
代码随想录算法训练营 —day32 文章目录 代码随想录算法训练营前言一、动态规划理论基础二、509. 斐波那契数动态规划动态规划优化空间版递归法 三、70. 爬楼梯动态规划动态规划空间优化 746. 使用最小花费爬楼梯动态规划空间优化 总结 前言 今天是算法营的第32天,…...
设计模式的艺术-开闭原则
原则使用频率图(仅供参考) 1.如何理解开闭原则 简单来说,开闭原则指的是 “对扩展开放,对修改关闭”。 当软件系统需要增加新的功能时,应该通过扩展现有代码的方式来实现,而不是去修改已有的代码。 例如我…...
【易康eCognition实验教程】003:点云数据加载浏览与操作详解
文章目录 一、加载并创建点云数据二、三维浏览1. 点云模式2. 点云视图设置 三、使用点云 一、加载并创建点云数据 本实验点云数据位于专栏配套实验数据包中的data003.rar中的terrian.las,解压后进行以下实验操作。 打开ecognition软件,点击【File】→【…...
海外雅思备考经验
1.18号斯图雅思考试 第一次考雅思,第一次在国外考雅思! 最近在德国斯图加特联培,报考了1月18号的雅思机考,下面分享一些考试经验. ✌️考试地点 EZ Plus WEST Hasenbergstr. 31/1,, in the backyard of Hasenbergstrae 31, Stuttg…...
Oracle之Merge into函数使用
Merge into函数为Oracle 9i添加的语法,用来合并update和insert语句。所以也经常用于update语句的查询优化: 一、语法格式: merge into A using B on (A.a B.a) --注意on后面带括号,且不能更新join的字段 when matched then upd…...
Spring Boot 自定义属性
Spring Boot 自定义属性 在 Spring Boot 应用程序中,application.yml 是一个常用的配置文件格式。它允许我们以层次化的方式组织配置信息,并且比传统的 .properties 文件更加直观。 本文将介绍如何在 Spring Boot 中读取和使用 application.yml 中的配…...
前端面试题-问答篇-5万字!
1. 请描述CSS中的层叠(Cascade)和继承(Inheritance)规则,以及它们在实际开发中的应用。 在CSS中,层叠(Cascade)和继承(Inheritance)是两个关键的规则&#x…...