济南网站建设哪家好/网络工程师培训班要多少钱

济南网站建设哪家好,网络工程师培训班要多少钱,python做动态网站,如何申请域名注册另一棵树的子树 https://leetcode.cn/problems/subtree-of-another-tree/description/ 描述 给你两棵二叉树 root 和 subRoot检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树如果存在,返回 true ;否则,返回 false二叉树 tree …

另一棵树的子树

  • https://leetcode.cn/problems/subtree-of-another-tree/description/

描述

  • 给你两棵二叉树 root 和 subRoot
  • 检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树
  • 如果存在,返回 true ;否则,返回 false
  • 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点
  • tree 也可以看做它自身的一棵子树

示例 1

输入:root = [3,4,5,1,2], subRoot = [4,1,2]
输出:true

示例 2

输入:root = [3,4,5,1,2,null,null,null,null,0], subRoot = [4,1,2]
输出:false

提示

  • root 树上的节点数量范围是 [1, 2000]
  • subRoot 树上的节点数量范围是 [1, 1000]
  • - 1 0 4 10^4 104 <= root.val <= 1 0 4 10^4 104
  • - 1 0 4 10^4 104 <= subRoot.val <= 1 0 4 10^4 104

Typescript 版算法实现


1 ) 方案1:深度优先搜索暴力匹配

/*** Definition for a binary tree node.* class TreeNode {*     val: number*     left: TreeNode | null*     right: TreeNode | null*     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.left = (left===undefined ? null : left)*         this.right = (right===undefined ? null : right)*     }* }*/function isSubtree(root: TreeNode | null, subRoot: TreeNode | null): boolean {if (!root) return false;return check(root, subRoot) || isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot);
}function check(a: TreeNode | null, b: TreeNode | null): boolean {if (!a && !b) return true;if (!a || !b) return false;if (a.val === b.val) return check(a.left, b.left) && check(a.right, b.right);return false;
}

2 ) 方案2:深度优先搜索序列上做串匹配

/*** Definition for a binary tree node.* class TreeNode {*     val: number*     left: TreeNode | null*     right: TreeNode | null*     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.left = (left===undefined ? null : left)*         this.right = (right===undefined ? null : right)*     }* }*/function getMaxElement(root: TreeNode | null, maxElement: { value: number }): void {if (!root) return;maxElement.value = Math.max(maxElement.value, root.val);getMaxElement(root.left, maxElement);getMaxElement(root.right, maxElement);
}function getDfsOrder(root: TreeNode | null, order: number[], lNull: number, rNull: number): void {if (!root) return;order.push(root.val);if (root.left) {getDfsOrder(root.left, order, lNull, rNull);} else {order.push(lNull);}if (root.right) {getDfsOrder(root.right, order, lNull, rNull);} else {order.push(rNull);}
}function kmp(sOrder: number[], tOrder: number[]): boolean {const sLen = sOrder.length, tLen = tOrder.length;const fail: number[] = new Array(tLen).fill(-1);for (let i = 1, j = -1; i < tLen; ++i) {while (j !== -1 && tOrder[i] !== tOrder[j + 1]) {j = fail[j];}if (tOrder[i] === tOrder[j + 1]) {++j;}fail[i] = j;}for (let i = 0, j = -1; i < sLen; ++i) {while (j !== -1 && sOrder[i] !== tOrder[j + 1]) {j = fail[j];}if (sOrder[i] === tOrder[j + 1]) {++j;}if (j === tLen - 1) {return true;}}return false;
}function isSubtree(s: TreeNode | null, t: TreeNode | null): boolean {let maxElement = Number.MIN_SAFE_INTEGER;getMaxElement(s, { value: maxElement });getMaxElement(t, { value: maxElement });const lNull = maxElement + 1;const rNull = maxElement + 2;const sOrder: number[] = [];const tOrder: number[] = [];getDfsOrder(s, sOrder, lNull, rNull);getDfsOrder(t, tOrder, lNull, rNull);return kmp(sOrder, tOrder);
}

3 ) 方案3:基于两棵树是否相同来判断

/*** Definition for a binary tree node.* class TreeNode {*     val: number*     left: TreeNode | null*     right: TreeNode | null*     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.left = (left===undefined ? null : left)*         this.right = (right===undefined ? null : right)*     }* }*/function isSubtree(root:TreeNode | null, subRoot:TreeNode | null) {// 不停地比较, 某一个子树,是不是和subRoot一样if(!root) return falseif((root.val === subRoot.val) && (isSameTree(root,subRoot))) return truereturn isSubtree(root.left,subRoot) || isSubtree(root.right,subRoot)
};function isSameTree(p: TreeNode | null, q: TreeNode | null): boolean {if(!p && !q) return trueif(!p || !q) return falseif(p.val!==q.val) return falsereturn isSameTree(p.left,q.left) && isSameTree(p.right,q.right)
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/66948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NineData云原生智能数据管理平台新功能发布|2024年12月版

本月发布 7 项更新&#xff0c;其中重点发布 2 项、功能优化 5 项。 重点发布 数据库 Devops - Oracle 非表对象支持可视化创建与管理 Oracle 非表对象&#xff0c;包括视图&#xff08;View&#xff09;、包&#xff08;Package&#xff09;、存储过程&#xff08;Procedur…

[Unity]MacOS下开发Unity

需要的插件 我使用的是vscode&#xff0c;经过长时间的使用我发现一个问题就是很多插件都是动态的在变化的&#xff0c;不是一成不变的&#xff0c;可能是重构&#xff0c;可能直接换了其他的工具。 所以这个插件也会是更新的状态。 2025年01月08日更新 .NET Install Tool (…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(五)

文章目录 一、学生管理模块功能实现1、添加学生功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、学生管理功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询接口实现2.3.2 后端编辑接口实现2.3.3 后端删除接口实现2.4 效果展示二、代码…

实现一个VSCode插件(从创建到发布)

实现一个自己的VSCode 插件 本文将以 yo 为例&#xff0c; 实现一个 VS Code 插件 从创建到发布。 文章目录 实现一个自己的VSCode 插件1. 初始化项目2. 项目结构3. 实现插件功能4. 测试和运行插件5. 发布6. 下载自己发布的插件 1. 初始化项目 首先&#xff0c;我们需要安装 …

Unity TextMesh Pro入门

概述 TextMesh Pro是Unity提供的一组工具&#xff0c;用于创建2D和3D文本。与Unity的UI文本和Text Mesh系统相比&#xff0c;TextMesh Pro提供了更好的文本格式控制和布局管理功能。 本文介绍了TMP_Text组件和Tmp字体资产(如何创建字体资产和如何解决缺字问题),还有一些高级功…

【教程】数据可视化处理之2024年各省GDP排名预测!

过去的一年里&#xff0c;我国的综合实力显著提升&#xff0c;在新能源汽车、新一代战机、两栖攻击舰、航空航天、芯片电子、装备制造等领域位居全球前列。虽然全国各省市全年的经济数据公布还需要一段时间&#xff0c;但各地的工业发展数据&#xff0c;财政收入数据已大概揭晓…

后端:Spring(IOC、AOP)

文章目录 1. Spring2. IOC 控制反转2-1. 通过配置文件定义Bean2-1-1. 通过set方法来注入Bean2-1-2. 通过构造方法来注入Bean2-1-3. 自动装配2-1-4. 集合注入2-1-5. 数据源对象管理(第三方Bean)2-1-6. 在xml配置文件中加载properties文件的数据(context命名空间)2-1-7. 加载容器…

从CentOS到龙蜥:企业级Linux迁移实践记录(龙蜥开局)

引言&#xff1a; 在我们之前的文章中&#xff0c;我们详细探讨了从CentOS迁移到龙蜥操作系统的基本过程和考虑因素。今天&#xff0c;我们将继续这个系列&#xff0c;重点关注龙蜥系统的实际应用——特别是常用软件的安装和配置。 龙蜥操作系统&#xff08;OpenAnolis&#…

一.项目课题 <基于TCP的文件传输协议实现>

客户端代码 需要cJSON.c文件和cJSON.h文件 在这里插入代码片#include "myheadth.h" #include "myfun.h"#define TIME 10 int sockfd; void heartbeat(int signum) {cJSON* root cJSON_CreateObject();cJSON_AddStringToObject(root,"request"…

Type-C双屏显示器方案

在数字化时代&#xff0c;高效的信息处理和视觉体验已成为我们日常生活和工作的关键需求。随着科技的进步&#xff0c;一款结合了便携性和高效视觉输出的设备——双屏便携屏&#xff0c;逐渐崭露头角&#xff0c;成为追求高效工作和娱乐体验人群的新宠。本文将深入探讨双屏便携…

计算机视觉算法实战——车道线检测

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​​​​ ​​​​​​​​​​​​ ​​​​​ 车道线检测是计算机视觉领域的一个重要研究方向&#xff0c;尤其在自动驾驶和高级驾驶辅助…

【微服务】面试 3、 服务监控 SkyWalking

微服务监控的原因 问题定位&#xff1a;在微服务架构中&#xff0c;客户端&#xff08;如 PC 端、APP 端、小程序等&#xff09;请求后台服务需经过网关再路由到各个微服务&#xff0c;服务间可能存在多链路调用。当某一微服务挂掉时&#xff0c;在复杂的调用链路中难以迅速确定…

【MySQL数据库】基础总结

目录 前言 一、概述 二、 SQL 1. SQL通用语法 2. SQL分类 3. DDL 3.1 数据库操作 3.2 表操作 4. DML 5. DQL 5.1 基础查询 5.2 条件查询 5.3 聚合函数 5.4 分组查询 5.5 排序查询 5.6 分页查询 6. DCL 6.1 管理用户 6.2 权限控制 三、数据类型 1. 数值类…

aws(学习笔记第二十三课) step functions进行开发(lambda函数调用)

aws(学习笔记第二十三课) 开发step functions状态机的应用程序 学习内容&#xff1a; step functions状态机的概念开发简单的step functions状态机 1. step functions状态机概念 官方说明文档和实例程序 AWS的官方给出了学习的链接和实例程序。使用SAM创建step functions 借…

【Docker】入门教程

目录 一、Docker的安装 二、Docker的命令 Docker命令实验 1.下载镜像 2.启动容器 3.修改页面 4.保存镜像 5.分享社区 三、Docker存储 1.目录挂载 2.卷映射 四、Docker网络 1.容器间相互访问 2.Redis主从同步集群 3.启动MySQL 五、Docker Compose 1.命令式安装 …

算法练习7——拦截导弹的系统数量求解

题目描述 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。 假设某天雷达捕捉到敌国的导弹来袭。由于该系统还在试用…

如何使用高性能内存数据库Redis

一、详细介绍 1.1、Redis概述 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。Redis支持多种类型的数据结构&#xff0c;如字符串&#xff08;strings&#xff09;、哈希&am…

【Linux系列】`find / -name cacert.pem` 文件搜索

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

UE材质Fab Megascans

2025年Bridge里已经不能直接导入资产了&#xff0c;显示GET IT ON FAB 只能在Fab中导入资产&#xff0c; 纹理打包技术从RMA改成了ORM O&#xff1a;AO 环境光遮蔽 R&#xff1a;Roughness 粗糙度 M&#xff1a;Metallic 金属度 在Fab中找到材质&#xff0c;点击Add to P…

【NP-hard问题】NP与NP-hard问题通俗解释

最近在研究NP-hard问题&#xff0c;讲一下自己的对于NP与NP-hard问题的通俗解释 一、NP-Hard 问题是什么意思&#xff1f; 什么是 NP&#xff1f; NP 问题可以理解为「检查答案很容易&#xff0c;但找到答案很难」。 举个例子&#xff1a; 假设你在一个迷宫里&#xff0c;…