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;
    }
};

运行结果

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

相关推荐
应用市场1 分钟前
红绿灯背后的算法:从 Webster 配时到 Max-Pressure 与强化学习
算法
用户0510122572966 分钟前
DAY 5-智能指针与 C++ 内存管理
c++·面试
木井巳11 分钟前
【DFS解决floodfill算法】岛屿的最大面积
java·算法·leetcode·深度优先
(Charon)13 分钟前
【C++】手写 MySQL 连接池(三):异步任务队列与工作线程
c语言·c++
yyds_yyd_1008628 分钟前
877. 石子游戏(2026.08.02)& 486. 预测赢家(2026.08.01)
c++·leetcode
小小帅呀1 小时前
CUDA编程实战12:原子操作与高性能直方图——从正确累加到低冲突并行更新
c++·人工智能·线性代数·矩阵
加油码1 小时前
共享内存详解:原理、系统调用与高性能进程间通信
linux·c语言·c++
June`2 小时前
常量内存和只读缓存
c++·人工智能·算法·cuda
一条大祥脚2 小时前
ABC468 扫描线|贡献法|二阶差分|线段树优化DP
数据结构·算法
happyprince2 小时前
篇2-bitsandbytes-具体观-算法与实现剖析
算法