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

<刷题笔记> 二叉搜索树与双向链表注意事项

二叉搜索树与双向链表_牛客题霸_牛客网 (nowcoder.com)

根据题意,我们需要将搜索二叉树转换成有序的形式。

重点一:BST的中序遍历一定是有序的

因此,此题无论如何都需要使用中序。

又因为要求原地算法,所以:

 重点二:中序遍历的第一个节点就是最左的节点,在走到最左节点之前,prev都应该指向nullptr

所以只有在遍历到节点之后,才需要让prev=cur,之前的向左递归的步骤都不需要也不能让prev跟上cur的值。

实现代码如下:

class Solution {
public:void Inorder(TreeNode* cur,TreeNode*& prev){/*cur是在递归的中序遍历,所以一定不传引用,而prev必须一直传引用*/if(cur==nullptr){//prev = cur;return ;}//prev = cur;Inorder(cur->left,prev);//prev表示的是当前遍历节点的上一个有效位置cur->left = prev;if(prev) prev->right = cur;prev = cur ;Inorder(cur->right,prev);}TreeNode* Convert(TreeNode* pRootOfTree) {if(pRootOfTree==nullptr) return nullptr;TreeNode* cur = pRootOfTree;TreeNode* prev = nullptr;Inorder(cur,prev);TreeNode* head = pRootOfTree;while(head->left){head = head->left;}return head;}
};

 重点三:关于在递归中设计不递归的变量

cur作为中序遍历的对象,在递归过程中一直使用传值传参

而prev作为非递归对象,需要他一直保持一个值,所以一定使用传引用传参。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【AI写作】解释区块链技术的应用场景和优势
  • 【Git入门】使用 Git 进行项目管理:Word Count 程序开发与托管
  • 408算法题leetcode--第14天
  • 【CSS】变量的声明与使用
  • 【Linux基础IO】深入解析Linux基础IO缓冲区机制:提升文件操作效率的关键
  • Android数据序列化总结
  • Redis Bigkey
  • 从零到爆款:利用自养号测评打造Temu、亚马逊热销产品
  • 蠕虫病毒(网络安全小知识)
  • 【权限控制】一个通用的用户权限控制架构设计方案,可以适用于大多数应用场景
  • [数组计数法]#116. 开会时间
  • 戏曲多多 1.0.6.0 专为电视端设计的戏曲与生活内容APP,同样适用于安卓手机,方便老年人使用
  • 学习C4模型的新网站
  • 传奇开服需要多少钱?传奇开服服务器是自己买还是租?
  • Unity DOTS系列之托管/非托管Component的区别与性能分析
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 2018一半小结一波
  • Android系统模拟器绘制实现概述
  • Apache的80端口被占用以及访问时报错403
  • Git学习与使用心得(1)—— 初始化
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript 一些 DOM 的知识点
  • Java多线程(4):使用线程池执行定时任务
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • linux学习笔记
  • mockjs让前端开发独立于后端
  • mysql innodb 索引使用指南
  • Netty 4.1 源代码学习:线程模型
  • Next.js之基础概念(二)
  • ubuntu 下nginx安装 并支持https协议
  • 关于Flux,Vuex,Redux的思考
  • 观察者模式实现非直接耦合
  • 将 Measurements 和 Units 应用到物理学
  • 力扣(LeetCode)56
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 容器服务kubernetes弹性伸缩高级用法
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 如何正确理解,内页权重高于首页?
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #define 用法
  • (145)光线追踪距离场柔和阴影
  • (3)nginx 配置(nginx.conf)
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (回溯) LeetCode 46. 全排列
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (算法)Travel Information Center
  • (五)IO流之ByteArrayInput/OutputStream
  • (五)MySQL的备份及恢复
  • (一)Docker基本介绍