当前位置: 首页 > news >正文

树的练习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.jsqmd.com/news/275207/

相关文章:

  • 亲测有效!论文降AI率压到10%以下的技巧:这4个指令+3个技巧,降AI率真的够用了!
  • 大数据毕设选题推荐:基于python的机器学习房价预测可视化系统基于机器学习的房子价值预测系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 苹果用户福音:Chrome新工具让Safari迁移变得极简
  • pycharm inherit packages from base interpreter 和 make available to all projects 的区别是什么
  • 光束驱动AI计算实现超级计算机级性能
  • 9个降AI率工具推荐!继续教育学生必看
  • 大数据毕设项目:基于django的城市房产价值的数据分析与预测系统的设计与实现(源码+文档,讲解、调试运行,定制等)
  • MagSafe星期一:Anker超薄Qi2电池包成为EDC装备完美搭档
  • kali和centOS在用户创建相关方面命令的差别
  • 1990:种下那棵不落叶的树-第5集:文件系统的名字
  • 百乐满热水器维修电话:深圳用户必看!深圳百乐满售后联系方式与专业服务指南 - 小白条111
  • 大数据计算机毕设之基于hadoop的山东瓜果蔬菜分析系统(完整前后端代码+说明文档+LW,调试定制等)
  • 【计算机毕业设计案例】基于django大数据在直播带货商品选品中的应用(程序+文档+讲解+定制)
  • Wi-Fi信号检测心跳技术:非接触式心率监测新突破
  • 2026年11项惊人工程技术突破即将到来
  • 大数据毕设选题推荐:基于django大数据在直播带货商品选品中的应用【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 四剑客find及命令补充
  • 2025增长亮眼,2026 Akamai踏上AI落地新征程
  • 【计算机毕业设计案例】基于django的电子产品电商平台主数据管理系统基于django的电子产品电商平台主数据管理系统(程序+文档+讲解+定制)
  • IEEE推出两项AI伦理认证计划助力可信人工智能发展
  • 全网最全专科生必备TOP8 AI论文写作软件测评
  • 从iPhone 13 Pro Max升级到iPhone 17 Pro Max的5大感受
  • 【计算机毕业设计案例】基于python的台风灾情灾情数据可视化系统(程序+文档+讲解+定制)
  • 计算机大数据毕设实战-基于django大数据在直播带货商品选品中的应用【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 大数据毕设项目推荐-基于django的线上电子产品销售平台电子产品电商平台主数据管理系统【附源码+文档,调试定制服务】
  • 【论文自动阅读】
  • 房间大小的粒子加速器实现商业化应用
  • AI Agent在智能牙刷中的刷牙效果分析
  • Agent数据大脑:七层智能体架构解析
  • SSM275的咖啡馆管理系统