Leetcode—426. 将二叉搜索树转化为排序的双向链表【中等】Plus

2024每日刷题(148)

Leetcode---426. 将二叉搜索树转化为排序的双向链表

实现代码

cpp 复制代码
/*
// Definition for a Node.
class Node {
public:
    int val;
    Node* left;
    Node* right;

    Node() {}

    Node(int _val) {
        val = _val;
        left = NULL;
        right = NULL;
    }

    Node(int _val, Node* _left, Node* _right) {
        val = _val;
        left = _left;
        right = _right;
    }
};
*/

class Solution {
public:
    Node* treeToDoublyList(Node* root) {
        if(root == nullptr) {
            return (Node*)nullptr;
        }

        // 中序遍历
        stack<Node*> st;
        Node* first = nullptr;
        Node* pre = nullptr;

        while(root != nullptr || !st.empty()) {
            // 左子树全部入栈
            while(root != nullptr) {
                st.push(root);
                root = root->left;
            }

            root = st.top(), st.pop();
            if(first == nullptr) {
                first = root;
            }

            if(pre != nullptr) {
                pre->right = root;
                root->left = pre;
            }

            pre = root;
            root = root->right;
        }

        first->left = pre;
        pre->right = first;
        return first;
    }
};

运行结果

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

相关推荐
乐观勇敢坚强的老彭4 分钟前
c++信息学竞赛数组大小规划与避坑速查表
开发语言·c++
程序猫.6 分钟前
双指针问题
java·数据结构·算法
深海向晚13 分钟前
NX二次开发:递归遍历特征组并收集所有特征
c++
重生之小比特16 分钟前
【初阶C++】list
开发语言·c++·list
郝学胜-神的一滴18 分钟前
CMake 047:解锁安装阶段自定义操作,告别配置阶段提前执行坑
运维·服务器·c++·游戏引擎·图形渲染·opengl
心抵鹊19 分钟前
力扣每日一题:计算右侧小于当前元素的个数(hard)
算法·leetcode
50万马克的面包23 分钟前
数据结构:线性表 —— 顺序表与链表完整总结
数据结构·链表
鹿角片ljp25 分钟前
LeetCode 142:环形链表 II |HashSet 保底解 + Floyd 快慢指针找环入口
算法·leetcode·链表
Fairy要carry27 分钟前
初创实习-IMU模型
人工智能·算法·机器学习
a1879272183127 分钟前
【算法】回溯算法(一):从一道 IP 题到万能模板
算法·leetcode·go·回溯·leetcode93·ip复原·算法讲解