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

运行结果

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

相关推荐
stolentime1 分钟前
CF2066D2 Club of Young Aircraft Builders (hard version)题解
c++·算法·动态规划·组合数学
中屹指纹浏览器2 分钟前
2026WebGL2着色器浮点精度与帧缓存像素指纹溯源及内核渲染层差异化改造详解
经验分享·笔记
rqtz6 分钟前
【C++】源码编译 Qt5.15.3|Ubuntu22.04 下 ROS 开发环境搭建
开发语言·c++·qt·ros
洛水水6 分钟前
图床项目实现:注册登录 + 文件上传等功能的完善
网络·c++·mysql·图床
一个不知名程序员www6 分钟前
算法学习入门---算法题DAY3
c++·算法
法雅特吉他7 分钟前
入门吉他选云杉还是桃花心木?面板材质原理与选购建议
经验分享·新媒体运营·学习方法·材质·用户运营·内容运营
七夜zippoe8 分钟前
DolphinDB向量化计算:高性能数据处理
算法·dolphindb
悠仁さん17 分钟前
哈夫曼树的简单介绍
算法
bIo7lyA8v18 分钟前
算法与数据结构协同优化的设计思想的技术8
数据结构·算法
Lsk_Smion21 分钟前
力扣实训 _ [98].验证二叉搜索树 _ 将二叉树展开成链表
数据结构·算法·leetcode