手撕算法-二叉搜索树与双向链表

牛客BM30。

描述:
https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5?tpId=295&tqId=23253&ru=/exam/oj&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Foj

分析:

二叉搜索树的中序遍历是递增序列。可以利用中序遍历完成。

同时不能新增节点,只能改变指针方向,left代表左,right代表右。

中序遍历时,会一次遍历从小到大的节点,此时记录前一个节点pre和当前节点cur,将:

pre.right = cur;

cur.left = pre;

pre = cur;

链接后的示意图(参考网图):

代码:

java 复制代码
public class Solution {
    TreeNode pre = null;

    TreeNode head = null;
    public TreeNode Convert(TreeNode pRootOfTree) {
        if (pRootOfTree == null) return pRootOfTree;
        TreeNode cur = pRootOfTree;
        //首先递归到最左最小值
        Convert(pRootOfTree.left);
        if (pre == null) {
            //找到最小值,初始化head与pre
            pre = cur;
            head = cur;
        } else {
            //当前节点与上一节点建立连接,将pre设置为当前值
            pre.right = cur;
            cur.left = pre;
            pre = cur;
        }
        Convert(pRootOfTree.right);

        return head;
    }
}
相关推荐
hwtwhy10 分钟前
【情人节特辑】C 语言实现浪漫心形粒子动画(EasyX 图形库)
c语言·开发语言·c++·学习·算法
云淡风轻~窗明几净12 分钟前
割圆术求Pi值的重新验证
数据结构·算法
陈天伟教授14 分钟前
人工智能应用- 材料微观:01. 微观结构的重要性
人工智能·神经网络·算法·机器学习·推荐算法
盲盒Q16 分钟前
《内存之茧》
数据结构·人工智能·ruby
ValhallaCoder43 分钟前
hot100-贪心
数据结构·python·算法·贪心算法
追风少年ii1 小时前
顶刊分享--由细菌-癌细胞相互作用决定的差异性肿瘤免疫
人工智能·算法·数据分析·空间·单细胞
pp起床1 小时前
动态规划 | part04
算法·动态规划
随意起个昵称1 小时前
Floyd算法做题笔记
笔记·算法
逆向菜鸟1 小时前
【原创】基因编辑公式总结及延缓衰老方法
算法
追随者永远是胜利者1 小时前
(LeetCode-Hot100)200. 岛屿数量
java·算法·leetcode·职场和发展·go