网站开发报价表格专业外包

张小明 2026/3/2 18:06:49
网站开发报价表格,专业外包,著名logo设计,开创者wordpress素材这一题的大意是给出一个BST的前序遍历#xff0c;让我们在这棵BST二叉树中#xff0c;给出两个的点#xff0c;判断这两个点在这棵二叉树的最近公共祖先是谁#xff0c;这两个点可能并不在树中#xff0c;也有可能给出的节点是另一个节点的祖先#xff0c;我们需要针对不…这一题的大意是给出一个BST的前序遍历让我们在这棵BST二叉树中给出两个的点判断这两个点在这棵二叉树的最近公共祖先是谁这两个点可能并不在树中也有可能给出的节点是另一个节点的祖先我们需要针对不同情况做出不同的判断。因为题目给出的节点的值是在int范围内也就是说这个值可能会很大我们可以选择离散化把N个值映射到1-N这样我们就可以用int depp[10005]直接来表示某一个节点的深度了。与unordered_mapint,int来说速度更快了因为是BST所以中序遍历的节点就是将所有值从小到大排序的结果。实际上不用离散化也可以吧可以参考这一题PAT 1151 LCA in a Binary Tree但BST中序遍历是升序的用离散化也可以在建树的过程中少写一个for循环查找中序遍历中根节点的位置。我们可以根据中序遍历和前序遍历来建树用哈希表来存储节点从而可以来找任意两个节点的公共祖先。因为只需要找公共祖先所以我们不用存储孩子节点只需要找到每一个节点的父亲节点和它的深度即可。根据前序遍历和中序遍历的建树方法已经写过多次了这里不再赘述在建好树后我们就需要关注如何找两个节点的最近公共祖先。我们只需要保证当深度相同时两个节点都去看它的父亲节点如果一个节点的深度比另一个节点大那么我们先去看这个深度深的节点同时看深度深的节点的祖先节点是否会等于另一个节点。 直到两个节点深度一样。大致思路就是如上完整代码如下#includebits/stdc.h#includeiostreamusingnamespacestd;intM;intN;unordered_mapint,intparent;vectorintpreorder;vectorintinorder;vectorinttemp;unordered_mapint,intlast;intdeep[10005];unordered_mapint,intmp;intbuild(intprestart,intpreend,intinstart,intinend,intd){if(prestartpreend||instartinend){return-1;}introotpreorder[prestart];deep[root]d;intindexroot-1;intlenindex-instart;intxlbuild(prestart1,prestartlen,instart,instartlen-1,d1);if(xl!-1)parent[xl]root;intxrbuild(prestartlen1,preend,instartlen1,inend,d1);if(xr!-1)parent[xr]root;returnroot;}intmain(){cinMN;for(inti0;iN;i){intx;cinx;preorder.push_back(x);}temppreorder;sort(temp.begin(),temp.end());for(inti0;itemp.size();i){mp[temp[i]]i1;last[i1]temp[i];temp[i]i1;}inordertemp;for(inti0;ipreorder.size();i){preorder[i]mp[preorder[i]];}introotbuild(0,N-1,0,N-1,0);intu;intv;for(inti0;iM;i){cinuv;if(!mp.count(u)!mp.count(v)){//如果u和v都不存在printf(ERROR: %d and %d are not found.\n,u,v);continue;}elseif(!mp.count(u)){printf(ERROR: %d is not found.\n,u);continue;}elseif(!mp.count(v)){printf(ERROR: %d is not found.\n,v);continue;}//现在要找最近公共祖先了//先把uv离散//如果它们不再同一层那么就需要把它们放到同一层inttempump[u];inttempvmp[v];if(temputempv){printf(%d is an ancestor of %d.\n,u,v);continue;}boolflag0;while(tempu!root||tempv!root){if(deep[tempu]deep[tempv]){if(parent[tempu]tempv){//说明v是u的ancestorflag1;printf(%d is an ancestor of %d.\n,v,u);break;}tempuparent[tempu];}elseif(deep[tempu]deep[tempv]){if(parent[tempu]parent[tempv]){flag1;printf(LCA of %d and %d is %d.\n,u,v,last[parent[tempu]]);break;}tempuparent[tempu];tempvparent[tempv];}else{if(parent[tempv]tempu){//说明u是v的ancestorflag1;printf(%d is an ancestor of %d.\n,u,v);break;}tempvparent[tempv];}}if(flag0){printf(LCA of %d and %d is %d.\n,u,v,last[parent[tempu]]);}}return0;}注意给出的两个节点可能是同一个我们要进行特判。inttempump[u];inttempvmp[v];if(temputempv){printf(%d is an ancestor of %d.\n,u,v);continue;}总结这一题就是BST建树最近公共祖先的求法我们用根据实际情况灵活建树。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

旅游网站开发意义和背景中国企业500强名单

5款QSS模板实战指南:零基础打造专业级Qt界面 【免费下载链接】QSS QT Style Sheets templates 项目地址: https://gitcode.com/gh_mirrors/qs/QSS 还在为Qt应用界面单调乏味而困扰吗?想要用最简单的方式让你的程序拥有商业级视觉效果吗&#xff1…

张小明 2025/12/30 11:44:29 网站建设

关于.net网站开发外文书籍wordpress新闻页面模板下载

EmotiVoice能否识别文本情感自动匹配语音? 在虚拟助手越来越“懂人心”、游戏NPC开始“真情流露”的今天,用户早已不再满足于那种一字一顿、毫无波澜的机械朗读。我们期待AI不仅能说话,还要会“演”——高兴时语调上扬,愤怒时语气…

张小明 2025/12/31 4:11:40 网站建设

建设速干裤移动网站济南竞价托管公司

在SpringBoot中&#xff0c;可以利用JUnit来实现单元测试。 以下是一般的JUnit单元测试步骤&#xff1a; 1.添加JUnit依赖 在Maven的pom.xml文件中添加JUnit依赖&#xff1a; <dependency>    <groupId>junit</groupId>    <artifactId>j…

张小明 2025/12/30 15:39:15 网站建设

校园网站开发需求文字wordpress 主题右边栏

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

张小明 2025/12/31 4:11:38 网站建设

境内境外网站区别wordpress 主题制作 加入评论

构建数字化时代的质量通行证 一、引言&#xff1a;兼容性测试的时代意义 在移动互联网、物联网、跨平台应用爆发的今天&#xff0c;兼容性测试已从“附加项”升级为“必选项”。据统计&#xff0c;2025年全球活跃的移动设备型号超过2.4万种&#xff0c;操作系统版本碎片化加剧…

张小明 2025/12/31 4:11:37 网站建设

咨询北京国互网网站建设百度地址

Springboot核心构建插件 SpringBoot 构建插件的核心目标是让开发者通过简单命令完成打包可执行应用、一键运行应用、生成构建信息&#xff0c;无需手动处理依赖包、启动类、类加载器等底层细节。 对于 Maven 工程 spring-boot-maven-plugin 是核心<build><plugins>…

张小明 2025/12/31 4:11:39 网站建设