news 2026/4/18 10:57:30

树的练习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/4/18 5:44:29

SSM283的列车火车高铁票务信息管理系统

目录SSM283列车票务信息管理系统摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;SSM283列车票务信息管理系统摘要 SSM283列车票务信息管理系统是基于SSM&#xff08;SpringSpring MVCMyBatis&#xff09;框架开发的智能化铁…

作者头像 李华
网站建设 2026/4/17 14:15:39

ssm285网上书店出库入库vue图书销售

目录系统架构与功能概述入库管理模块出库与销售模块技术实现细节数据安全与优化开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统架构与功能概述 SSM285网上书店系统基于SpringSpringMVCMyBatis&#xff08;SSM&#xff09;…

作者头像 李华
网站建设 2026/4/10 10:28:59

SSM297的vue前台美食点菜订餐系统vue

目录SSM297的Vue前台美食点菜订餐系统摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;SSM297的Vue前台美食点菜订餐系统摘要 该系统基于Vue.js前端框架与SSM&#xff08;SpringSpringMVCMyBatis&#xff09;后端架构开发&a…

作者头像 李华
网站建设 2026/4/18 6:44:35

房间大小的粒子加速器实现商业化应用

粒子加速器通常是巨大的结构——比如位于加利福尼亚州斯坦福的SLAC国家加速器实验室长达3.2公里。但科学家们一直在努力通过使用激光来执行加速过程&#xff0c;从而缩小这些加速器的体积。这些粒子加速器将只有一个房间大小&#xff0c;成本也会大大降低。现在&#xff0c;一家…

作者头像 李华
网站建设 2026/4/18 3:52:23

AI Agent在智能牙刷中的刷牙效果分析

AI Agent在智能牙刷中的刷牙效果分析 关键词:AI Agent、智能牙刷、刷牙效果分析、机器学习、传感器数据 摘要:本文深入探讨了AI Agent在智能牙刷中对刷牙效果进行分析的相关技术和应用。首先介绍了研究的背景、目的、预期读者以及文档结构等内容。接着详细阐述了AI Agent、智…

作者头像 李华
网站建设 2026/4/16 17:19:45

【论文自动阅读】

快速了解部分 基础信息&#xff08;英文&#xff09;&#xff1a; 1.题目: A Vision-Language-Action-Critic Model for Robotic Real-World Reinforcement Learning 2.时间: 2025.09 3.机构: Shanghai AI Lab 4.3个英文关键词: Vision-Language-Action (VLA), Real-World Rein…

作者头像 李华