天河建设网站方案深圳龙岩技术科技有限公司

web/2026/1/17 14:25:09/文章来源:
天河建设网站方案,深圳龙岩技术科技有限公司,菜谱网站开发,襄阳网站seo公司这是关于一个普通双非本科大一学生的C的学习记录贴 在此前#xff0c;我学了一点点C语言还有简单的数据结构#xff0c;如果有小伙伴想和我一起学习的#xff0c;可以私信我交流分享学习资料 那么开启正题 今天分享的是关于二叉树的题目 1.从前序与中序遍历序列构造二叉…这是关于一个普通双非本科大一学生的C的学习记录贴 在此前我学了一点点C语言还有简单的数据结构如果有小伙伴想和我一起学习的可以私信我交流分享学习资料 那么开启正题 今天分享的是关于二叉树的题目 1.从前序与中序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder 其中 preorder 是二叉树的先序遍历 inorder 是同一棵树的中序遍历请构造二叉树并返回其根节点。 这道题是很经典的二叉树题目原理就是利用前序插入数据中序判断左右子树构建二叉树利用了前序和中序的性质同时也利用了递归的思想 class Solution { public:TreeNode* _buildTree(vectorintpreorder, vectorint inorder, int inbegin, int inend, int prei){//判断是否需要构建if(inbegin inend)return nullptr;//构建头结点TreeNode* root new TreeNode(preorder[prei]);//查找分隔点int rooti inbegin;while(rooti inend){if(inorder[rooti] preorder[prei])break;elserooti;}//如果有数据递归链接左右子树if(inbegin rooti - 1)root-left _buildTree(preorder, inorder, inbegin, rooti - 1, prei);if(rooti 1 inend)root-right _buildTree(preorder, inorder, rooti 1, inend, prei);return root;}TreeNode* buildTree(vectorint preorder, vectorint inorder) {int inbegin 0, inend inorder.size() - 1, prei 0;//原函数无法直接完成递归借助子函数完成TreeNode* ret _buildTree(preorder, inorder, inbegin, inend, prei);return ret;} }; 这是ac代码  2.从中序与后序遍历蓄力构造二叉树 106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder 其中 inorder 是二叉树的中序遍历 postorder 是同一棵树的后序遍历请你构造并返回这颗 二叉树  这题与上面的题是姊妹题仅有细微的差别这里直接给代码 class Solution { public:TreeNode* _buildTree(vectorint inorder, vectorint postorder, int inbegin, int inend, int posti){//判断是否需要构建if(inbegin inend)return nullptr;//创建头结点TreeNode* root new TreeNode(postorder[posti]);//查找分隔点int rooti inbegin;while(rooti inend){if(inorder[rooti] postorder[posti])break;elserooti;}//递归创建左右子树并链接if(rooti 1 inend)root-right _buildTree(inorder, postorder, rooti 1, inend, --posti);if(inbegin rooti - 1)root-left _buildTree(inorder, postorder, inbegin, rooti - 1, --posti);return root;}TreeNode* buildTree(vectorint inorder, vectorint postorder){ int inbegin 0, inend inorder.size() - 1, posti postorder.size() - 1;TreeNode* ret _buildTree(inorder, postorder, inbegin, inend, posti);return ret;} }; 这是ac代码  3.二叉树的前序遍历 144. 二叉树的前序遍历 给你二叉树的根节点 root 返回它节点值的 前序 遍历。 二叉树的三种遍历在前面的学习都已经很熟悉了这里我们着重要掌握的是非递归的方法也是以后面试的一个小难题 这里先给出简单的递归解决办法 class Solution { public:void _preorderTraversal(TreeNode* root, vectorint v){if(root nullptr)return;v.push_back(root-val);_preorderTraversal(root-left, v);_preorderTraversal(root-right, v);}vectorint preorderTraversal(TreeNode* root) { vectorint v;_preorderTraversal(root, v);return v;} }; 那么非递归方法要如何求解呢首先我们要明白非递归方法是利用迭代来实现的但其原理还是根据递归的办法来解决的实际运用中递归由于要不停的创建函数栈帧有效率损耗实际上优化后时间差的并不多以及可能导致栈溢出所以我们才需要掌握非递归办法 非递归办法要创建一个stackpush进vector同时入栈在栈内模拟递归 class Solution { public:vectorint preorderTraversal(TreeNode* root) {vectorint v;stackTreeNode* st;TreeNode* cur root;while(cur || !st.empty()){while(cur){st.push(cur);v.push_back(cur-val);cur cur-left;}TreeNode* top st.top();st.pop();cur top-right;}return v;} }; 这是ac代码 4.二叉树的中序遍历 94. 二叉树的中序遍历 和前序遍历如出一辙这里直接给出递归代码以及非递归代码 a.递归方法 class Solution { public:void _inorderTraversal(TreeNode* root, vectorint v) {if(root nullptr)return;_inorderTraversal(root-left, v);v.push_back(root-val);_inorderTraversal(root-right, v);}vectorint inorderTraversal(TreeNode* root) {vectorint v;_inorderTraversal(root, v);return v;} }; b.非递归方法 class Solution { public:vectorint inorderTraversal(TreeNode* root) {vectorint v;stackTreeNode* st;TreeNode* cur root;while(cur || !st.empty()){while(cur){st.push(cur);cur cur-left;}TreeNode* top st.top();st.pop();v.push_back(top-val);cur top-right;}return v;} };5.二叉树的后序遍历 和上面的题相似但是后序遍历要更复杂一点因为要最后读取根所以我们要记录读取的值判断是否遍历完了子树再对根进行读取 class Solution { public:void _postorderTraversal(TreeNode* root, vectorint v){if(!root)return;_postorderTraversal(root-left, v);_postorderTraversal(root-right, v);v.push_back(root-val);}vectorint postorderTraversal(TreeNode* root) {vectorint v;_postorderTraversal(root, v);return v;} }; class Solution { public:vectorint postorderTraversal(TreeNode* root) {vectorint v;stackTreeNode* st;TreeNode* cur root;TreeNode* last nullptr;while(cur || !st.empty()){while(cur){st.push(cur);cur cur-left;}TreeNode* top st.top();if(top-right nullptr || last top-right){st.pop();last top;v.push_back(top-val);}else{cur top-right;}} return v;} }; 这是ac代码 新手写博客有不对的位置希望大佬们能够指出也谢谢大家能看到这里让我们一起学习进步吧

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

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

相关文章

顺德网站建设公司咨询云南省住房和建设厅网站

【BASH】回顾与知识点梳理 二十 二十. 十六至十九章知识点总结及练习20.1 总结20.2 练习 该系列目录 --> 【BASH】回顾与知识点梳理(目录) 二十. 十六至十九章知识点总结及练习 20.1 总结 shell script 是利用 shell 的功能所写的一个『程序 (prog…

网站备案最多需要多久建设网站会员登陆

以3040端口为例 要查看在Linux系统中哪个程序占用了3040端口,可以使用lsof命令或netstat命令结合适当的参数。这里提供两种常用的方法: 方法1:使用 lsof 命令 lsof(List Open Files)是一个查看当前系统打开文件的工…

网站备案查询姓名怎么样开发小程序

文章目录 Sentinel雪崩问题服务保护框架Sentinel配置 限流规则快速入门流控模式流控效果热点参数限流 隔离和降级FeignClient整合Sentinel线程隔离(舱壁模式)熔断降级 授权规则及规则持久化授权规则自定义异常结果持久化 Sentinel 雪崩问题 服务保护框架…

3.建设营销型网站流程wordpress meta 插件

1. 两个栈实现队列 实现一 思路 s1是入栈的,s2是出栈的。 入队列,直接压到s1是就行了出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素;再把s2的所有元素全部压回s1中 实现二 思路 s1是入栈的&#xff0c…

做追星网站效果图会泽住房和城乡建设局网站

文章目录 前言一、下载并安装Tesseract OCR二、配置环境变量三、Python中安装使用pytesseract总结 前言 Tesseract OCR是一个开源OCR(Optical Character Recognition)引擎,用于从图像中提取文本。Pytesseract是Tesseract OCR的Python封装&am…

公司网站建设推广方案模板网站没更新

参考 Lawrence Systems 的 Youtube,频道有教程。 安装 安装 Collabora,只需要修改 账户,密码,及证书。 新增 dataset,名称 “NextCloud_Database”,其他默认新增 dataset,名称 “NextCloud_Data”&#…

山西智能建站系统价格网站开发 实习报告

计算机网络总复习链接🔗 目录 组帧差错控制检错编码纠错编码 流量控制与可靠传输机制流量控制、可靠传输与滑动窗口机制单帧窗口与停止-等待协议多帧滑动窗口与后退N帧协议(GBN)多帧滑动窗口与选择重传协议 介质访问控制信道划分介质访问控制…

域名网站搭建软件交易网

Jersey2为Jackson和JAXB提供内置支持。 但是默认情况下不支持Jibx。 要将Jibx与Jersey2结合使用,我们将XML输入作为流,并在接收到请求之后,使用Jibx对其进行解析。 但是实际上,有更好的方法可以使用MessageBodyReader和MessageBod…

南京快速建站公司网站设计步骤及图解

1. ETag HTTP 1.1中引入了ETag来解决缓存的问题。ETag全称是Entity Tag,由服务端生成,服务端可以决定它的生成规则。如果根据文件内容生成散列值。那么条件请求将不会受到时间戳的改动造成带宽浪费。下面是根据内容生成散列值的方法: 1 var g…

小企业官方网站制作网页版聊天工具有哪些

「拥抱开源, 又见 .NET」随着 .NET Core的发布和开源,.NET又重新回到人们的视野。 .NET Core的下个3.0即将release,加入非常多的新功能,越来越拥抱变化,DevOps和Microservice的最佳实践已经在 .NET Core落地,比如 Ocel…

做手机网站公司微信开放平台和微信公众号的区别

Windows是一个不断发展的系统,很多新的 API 在操作系统更新时更新,而MASM32开发包一般在很长一段时间内都无法及时更新,如果需要在编程中使用新添加的API函数。就得自己动手来更手库文件,下面我就给大家介绍一下如何通过手动的方法…

网站控制用dw做网站的视频

《C语言第五六次作业.ppt》由会员分享,可在线阅读,更多相关《C语言第五六次作业.ppt(40页珍藏版)》请在人人文库网上搜索。1、C语言作业解析,第四弹,。原来真正变态的是这两作业哇 原本是做完第五次作业等大家数分期中考完以后给大家,结果直接…

优斗网站建设手机百度app最新版下载

文章目录 前言实验手册一、实验目的二、实验原理1.理论原理2.硬件原理 三、系统架构设计四、模块说明1.模块端口信号列表按键消抖模块(key)计数器模块(counter)蜂鸣器乐谱模块(music)蜂鸣器发声…

网站建设方法冫金手指排名26中英文自助网站建设

再谈协议HTTP协议认识URLurlencode和urldecodeHTTP协议格式HTTP的方法HTTP的状态码HTTP常见HeaderHTTP周边会话保持 再谈协议 协议是一种 “约定”. socket api的接口,在读写数据时,都是按 “字符串” 的方式来发送接收的(tcp是以字节流的方式发送的&am…

郑州网站服务公司做 了一个 家教 网站

零基础入门NLP - 新闻文本分类,正式赛第一名方案分享:https://mp.weixin.qq.com/s/7WpZUqdlItBToLYuRLm44g

空间手机版网站目录建设进wordpress根目录

从零实现的浏览器Web脚本 在之前我们介绍了从零实现Chrome扩展,而实际上浏览器级别的扩展整体架构非常复杂,尽管当前有统一规范但不同浏览器的具体实现不尽相同,并且成为开发者并上架Chrome应用商店需要支付5$的注册费,如果我们只…

微信网站的建立宿迁公司企业网站建设

C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE: typedef unsigned char BYTE;在这个类型定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写,例如&#xff1…

唐山有制作网站的没哪个网站可以做艺术字

这些老板们过的悠哉游哉,大富大贵没有,达到中产,活得舒服,没毛病。 企业官网每年需要交维护费主要是因为以下几个原因: 网站服务器和域名费用:企业官网需要通过服务器进行托管和访问,同时需要…

桂林临桂区建设局网站营销策划方案模板

今日份题目: 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 示例 给定二叉树: [3,9,20,null,null,15,7…

网站开发的挑战扬州公司做网站

自动并行计算 异步计算 默认情况下,PyTorch中的 GPU 操作是异步的。当调用一个使用 GPU 的函数时,这些操作会在特定的设备上排队但不一定会在稍后立即执行。这就使我们可以并行更多的计算,包括 CPU 或其他 GPU 上的操作。 一般情况下&…