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

运行结果

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

相关推荐
卷无止境3 分钟前
C++ 类型转换变迁之路:从隐式转换到 static_cast
c++·后端
黑科技iOS上架5 分钟前
分享一个开源的iOS应用AppIcon生成器
经验分享·ios
LJHclasstore_luo7 分钟前
【题解】WebGoC 102683.大雨过后
算法·goc编程
MrZhao4009 分钟前
Agent 如何持续工作:任务持久化、后台执行与定时唤醒
算法
用户7017207390011 分钟前
密码学之分组密码
算法
MrZhao40021 分钟前
Agent 长上下文处理机制:Context Compact 与 Memory 的协同
算法
卡梅德生物科技小能手24 分钟前
卡梅德生物科普CD80(B7-1):免疫系统的“双面间谍”
经验分享·深度学习·生活
h_a_o777oah30 分钟前
【动态规划】区间 DP :三层循环逻辑与模板实现细节(洛谷 P1880)
c++·算法·动态规划·acm·区间dp·化环为链·石子合并
从此以后自律35 分钟前
迪杰斯特拉
算法
BomanGe141 分钟前
NSK微型精密滚珠丝杠W0801MA技术指南
经验分享·规格说明书