JZ36二叉搜索树与双向链表

news/2025/2/23 5:49:39

题目地址:二叉搜索树与双向链表_牛客题霸_牛客网

题目回顾:

解题思路:

由题目可知,这里的二叉搜索树转成双向链表的符合左根右的逻辑顺序,且是一个递增序列。

创建两个指针,一个指向head,一个指向当前遍历的前一个节点也就是pre。先找到双向链表的头也就是树的最左边节点,初始化head和pre。处理中间根节点,然后开始连接pre和当前节点,连接后将pre更新为当前的节点,根据左根右的顺序,处理完左子树和根节点,就递归进入右子树继续进行处理。

在递归的过程中,递归的出口就是节点为空。

整体代码:

java"> public TreeNode head = null;
    public TreeNode pre = null;
    public TreeNode Convert(TreeNode pRootOfTree) {
        if (pRootOfTree == null)
            return null;
        Convert(pRootOfTree.left);
        if (pre == null){
            head = pRootOfTree;
            pre = pRootOfTree;
        }else {
            pre.right = pRootOfTree;
            pRootOfTree.left = pre;
            pre = pRootOfTree;
        }
        Convert(pRootOfTree.right);
        return head;
    }
 

                

http://www.niftyadmin.cn/n/4934991.html

相关文章

“深入剖析JVM内部原理:解密Java虚拟机的奥秘“

标题:深入剖析JVM内部原理:解密Java虚拟机的奥秘 摘要:本文将深入探讨Java虚拟机(JVM)的内部原理,包括其架构、内存管理、垃圾回收机制、即时编译器等关键组成部分。通过解密JVM的奥秘,我们将更…

分布式 - 消息队列Kafka:Kafka生产者发送消息的方式

文章目录 1. Kafka 生产者2. kafaka 命令行操作3. kafka 生产者发送消息流程4. Kafka 生产者的创建5. Kafka 生产者发送消息1. 发送即忘记2. 同步发送3. 异步发送 6. Kafka 消息对象 ProducerRecord 1. Kafka 生产者 不管是把Kafka作为消息队列、消息总线还是数据存储平台&…

redis的Key的过期策略是如何实现的?

Key的过期策略 一个redis中可能同时存在很多很多key,这些key可能有很大一部分都有过期时间,此时,redis服务器咋知道哪些key已经过期要被删除,哪些key还没有过期? 如果直接遍历所有的key,显然是行不通的&am…

23.8.10 杭电暑期多校8部分题解

1008 - Expectation of Rank 题目大意 一个 n ∗ n n*n n∗n 的矩阵在 m o d p mod\space p mod p 意义下随机生成,问矩阵的秩的期望为多少 解题思路 某一行要对秩产生贡献,那肯定与之前所有行之间都不存在线性相关 由此考虑dp, f i ,…

表的进阶查询

聚合查询 聚合函数 注意点: ①后面可以加where限定条件 ②可以使用as别名 count(列名) 统计该列有几行数据, 其中null会被忽略 sum(列名) 求该列所有数据的总和 avg(列名) 求该列所有数据的平均值 max(列名) 求该列的最大值数据 min(列名) 求该列的最小值数据 group by 语法 …

腾讯云服务器CVM实例族标准型/内存/高IO/大数据/GPU有什么区别?

腾讯云服务器CVM有多种实例族,如标准型S6、标准型S5、SA3实例、高IO型、内存、计算型及GPU型实例等,如何选择云服务器CVM实例规格呢?腾讯云服务器网建议根据实际使用场景选择云服务器CVM规格,例如Web网站应用可以选择标准型S5或S6…

Java面试——一分钟搞懂限流算法

为什么限流 运营网站,经常会遇到各种挑战:某黑客发起DoS攻击、网络爬虫网页抓取、商品秒杀活动、双十一与618等场景,会使流量突然激增,如果不限制流量的访问就会使系统宕机。 常见的限流算法 1.漏桶算法( LEAKY BUC…

【编程指南】ES2016到ES2023新特性解析一网打尽

ES2016 Array.prototype.includes() Array.prototype.includes 方法: 这个方法用于检查数组是否包含特定元素,如果包含则返回 true,否则返回 false // 我有一个水果篮子 const fruitBasket [apple, banana, orange, grape];// 我要检查篮…