树的练习7--------LCR 052.递增顺序搜索树

前言

今天这一题也是非常的憋屈,在递归上的运用可谓是得心应手,但是在一些小细节上却存在着致命的问题,现在来总结一下。

题目:点这里

解法:

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: vector<int> ret; int num; void inOrder(TreeNode* root){ if(root){ inOrder(root->left); ret.push_back(root->val); inOrder(root->right); } } TreeNode* dfs(int num){ if(num==ret.size()){ return NULL; } TreeNode* root = new TreeNode(ret[num]); root->right = dfs(++num);//如果是num++,那代表num是先传入再递增,传入的num的值永不改变,如果是++num,则代表是先递增后传入,虽然每次传入的num都增值了,但是本层函数中的num也增加了,这就使得后续传参错位。 root->left = NULL; // root->val = ret[num]; return root; } TreeNode* increasingBST(TreeNode* root) { ret.clear(); num = 0; inOrder(root); return dfs(num); } };

这个题目的思路很清晰,就是先将二叉搜索树利用前序遍历存入到数组中,然后将数组中的值利用遍历生成一棵符合要求的树。

小问题出现在第二步上,由于这棵树需要利用数组,所以我将索引作为形参来传递,但是在每次传入的值这里出了问题,如果传入的是num++,代表先传入后增值,那么在递归过程中num就不会改变了,也就进入了无穷次的递归;但如果改成++num,则代表先递增后传入,这样的话虽然num的值发生了改变,但是每一层的num却都加了不该加的1,导致归的时候根节点的赋值出现了错位,所以也是不对的;

我选择的补救措施是在递的时候提前赋值,就是这一行语句:

TreeNode* root = new TreeNode(ret[num]);

配合++num就能完美解决问题。

反思

还有这里相比用形参来传值,更好的做法是利用引用,这样可以增强代码的简洁性和可读性

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

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

相关文章

亲测有效!论文降AI率压到10%以下的技巧:这4个指令+3个技巧,降AI率真的够用了!

写完论文之后&#xff0c;你最怕的是什么&#xff1f; 我猜肯定是查重和查AI率吧。 AI率太高学校不让过&#xff0c;太低又显得不太真实…… 这意味着你得反复改、反复调&#xff0c;不停换词换句式&#xff0c;费时又费脑&#xff0c;简直让人头大。 别慌&#xff0c;这事儿…

大数据毕设选题推荐:基于python的机器学习房价预测可视化系统基于机器学习的房子价值预测系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

pycharm inherit packages from base interpreter 和 make available to all projects 的区别是什么

在 PyCharm 中,当你配置 Python 解释器(Interpreter)时,会遇到两个相关的选项:Inherit packages from base interpreter Make available to all projects这两个选项分别作用于虚拟环境的包继承行为和解释器本身的…

苹果用户福音:Chrome新工具让Safari迁移变得极简

谷歌正在开发一个全新的"Safari导入"工具&#xff0c;让iPhone用户从Safari切换到Chrome浏览器变得前所未有的简单。据The MacObserver报告&#xff0c;这项功能将彻底改变目前仅限于桌面端的复杂迁移流程。新工具工作原理与使用步骤这个新工具将基于iPhone系统设置中…

光束驱动AI计算实现超级计算机级性能

张量运算是一种支撑现代技术特别是人工智能的高级数学形式。这些运算远超人们日常遇到的简单计算。可以将其想象为同时在多个维度操控魔方&#xff0c;通过旋转、切片或重新排列各个层面。人类和传统计算机必须将这些任务分解为序列&#xff0c;但光可以同时执行所有操作。如今…

大数据毕设项目:基于django的城市房产价值的数据分析与预测系统的设计与实现(源码+文档,讲解、调试运行,定制等)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

9个降AI率工具推荐!继续教育学生必看

9个降AI率工具推荐&#xff01;继续教育学生必看 AI降重工具&#xff1a;让论文更自然&#xff0c;更安心 在当前的学术环境中&#xff0c;越来越多的学生开始关注“**论文降AIGC率**”和“**去AI痕迹**”的问题。随着AI写作工具的普及&#xff0c;许多论文在内容上虽然逻辑清晰…

kali和centOS在用户创建相关方面命令的差别

kali和centOS在用户创建相关方面命令的差别kali和centOS在用户创建相关方面命令的差别问题根源useradd 是极简创建 在 Kali 这类系统里, useradd 只会在系统数据库里创建用户条目,默认不会自动创建主目录( /home/…

MagSafe星期一:Anker超薄Qi2电池包成为EDC装备完美搭档

个人而言&#xff0c;我很想购买iPhone 17 mini&#xff0c;但无论如何&#xff0c;Max机型对我的前口袋来说太大了&#xff0c;我更喜欢能够单手使用手机。然而&#xff0c;坚持使用较小电池容量的机型迫使我重新思考我的EDC装备。由于我不会拥有Pro Max的大容量电池&#xff…

1990:种下那棵不落叶的树-第5集:文件系统的名字

笔言: 故事大纲&#xff08;45集微故事版&#xff09; 核心设定 作品信息&#xff1a;书名《1990&#xff1a;种下那棵不落叶的树》&#xff0c;文艺副标题《代码山河》&#xff1b;核心意象&#xff1a;以“树”【Linux】为核心&#xff0c;根系对应内核、枝干对应子系统、叶…

百乐满热水器维修电话:深圳用户必看!深圳百乐满售后联系方式与专业服务指南 - 小白条111

百乐满热水器维修电话:深圳用户必看!深圳百乐满售后联系方式与专业服务指南Paloma 百乐满热水器售后维修(深圳)中心作为深圳区域指定授权机构(百乐满热水器售后维修(深圳)中心 24小时维修热线电话:4001166000)…

大数据计算机毕设之基于hadoop的山东瓜果蔬菜分析系统(完整前后端代码+说明文档+LW,调试定制等)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

【计算机毕业设计案例】基于django大数据在直播带货商品选品中的应用(程序+文档+讲解+定制)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

Wi-Fi信号检测心跳技术:非接触式心率监测新突破

加利福尼亚的一个研究团队提出了一项创新技术&#xff0c;利用环境Wi-Fi信号来监测人体心率。这项名为Pulse-Fi的新方法为现有心率监测方法提供了显著优势&#xff1a;成本低廉、易于部署&#xff0c;并且无需用户佩戴任何设备。 加州大学圣克鲁兹分校教授Katia Obraczka领导了…

2026年11项惊人工程技术突破即将到来

脑芯片帮助盲人重见光明埃隆马斯克表示&#xff0c;他的公司Neuralink计划在2026年帮助完全失明的患者恢复部分视力。该公司计划在今年早期对其最新、最强大的植入物Blindsight进行人体测试。该芯片将无线连接到外部摄像头&#xff0c;并植入大脑视觉皮层。通过绕过眼睛&#x…

大数据毕设选题推荐:基于django大数据在直播带货商品选品中的应用【附源码、mysql、文档、调试+代码讲解+全bao等】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

四剑客find及命令补充

四剑客find及命令补充 1. 四剑客-grep过滤:在文件中或管道中进行查找,找出想要的内容(字符串), 默认按照行查找. grep会把匹配到的行显示出来.补充:四剑客 awk、sed、grep、find 1.1 概述与选项grep 选项 说明-n l…

2025增长亮眼,2026 Akamai踏上AI落地新征程

作者&#xff1a;王聪彬最近几年&#xff0c;全球云计算市场可以用增长迅猛来形容。Precedence Research 预测&#xff0c;2025年全球云计算市场规模已达9127.7亿美元&#xff0c;预计到2034年将突破5.15万亿美元。人工智能需求的集中涌入&#xff0c;正在成为云计算增长的核心…

【计算机毕业设计案例】基于django的电子产品电商平台主数据管理系统基于django的电子产品电商平台主数据管理系统(程序+文档+讲解+定制)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

IEEE推出两项AI伦理认证计划助力可信人工智能发展

几乎每个组织都在计划使用人工智能来改善运营。尽管自主智能系统能够带来显著效益&#xff0c;但也可能被不当使用。该技术可以创建深度伪造内容&#xff0c;制作逼真的篡改图像和视频来传播错误信息和虚假信息。同时&#xff0c;基于有偏见数据训练的AI系统可能在招聘、放贷和…