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

牛客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;
    }
}
相关推荐
博界IT精灵7 分钟前
图的存储结构(哈喜老师版本)
数据结构·考研
alxraves8 分钟前
超声诊断图像的关键算法概述
算法·安全·健康医疗·制造·信号处理
mask哥13 分钟前
15种算法模式java实现详解
java·算法·力扣
若尘79714 分钟前
数学idea的重构
算法·职场和发展·机器人
思茂信息14 分钟前
CST可重构雷达吸波器设计与仿真
网络·算法·平面·智能手机·重构·cst·电磁仿
游乐码15 分钟前
c#插入排序
数据结构·算法·排序算法
乐迪信息17 分钟前
乐迪信息:AI防爆摄像机,船舶偏航逆行算法实时告警零漏检
大数据·人工智能·物联网·算法·机器学习·计算机视觉·目标跟踪
昵称小白20 分钟前
图论专题(上)
算法·深度优先·图论
大大杰哥21 分钟前
leetcode hot100(2)双指针,滑动窗口
数据结构·算法·leetcode
风筝在晴天搁浅24 分钟前
LeetCode CodeTop 113.路径总和Ⅱ
算法·leetcode