news 2026/10/28 15:09:29

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树的练习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就能完美解决问题。

反思

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 3:58:08

大数据计算机毕设之(基于django大数据在直播带货商品选品中的应用完整前后端代码+说明文档+LW,调试定制等)

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

作者头像 李华
网站建设 2026/10/26 22:50:30

Jetson 磁盘加密学习笔记:从 LUKS/dm-crypt 到 APP/APP_ENC 与量产流程

📺 B站视频讲解(Bilibili):博主个人介绍 📘 《Yocto项目实战教程》京东购买链接:Yocto项目实战教程 Jetson 磁盘加密学习笔记:从 LUKS/dm-crypt 到 APP/APP_ENC 与量产流程 目标:基于 NVIDIA Jetson Linux R36.4.3 官方文档,把 Jetson 的 Disk Encryption(磁盘加密…

作者头像 李华
网站建设 2026/10/26 12:09:53

Kuikly 框架架构与目录导览(HarmonyOS 视角)

本文从 KuiklyUI 源码仓库结构出发&#xff0c;解释 Kuikly 的整体架构、每个关键目录的职责&#xff0c;并给出 鸿蒙开发只需关注的目录清单&#xff0c;便于快速进入开发状态。先跟大家说个好消息&#xff0c;该框架已经解决了windows平台的快速编译鸿蒙产物&#xff08;也就…

作者头像 李华
网站建设 2026/10/27 6:47:53

大数据毕设选题推荐:基于python大数据的国内自然地震数据可视化分析系统基于python的灾情数据可视化系统【附源码、mysql、文档、调试+代码讲解+全bao等】

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

作者头像 李华
网站建设 2026/10/27 6:47:53

【AI应用开发工程师】-分享2026年转型AI应用开发工程师经验

AI转型修罗场&#xff1a;2026年&#xff0c;你的“炼丹炉”还能炼出真金吗&#xff1f; 2025年&#xff0c;你只需会念“AI咒语”&#xff1b;2026年&#xff0c;你得自己写“咒语大全”了。 如果你今年刚打开招聘软件搜索“AI应用开发”&#xff0c;可能会被那些长得像岗位说…

作者头像 李华