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

运行结果

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

相关推荐
码匠许师傅10 分钟前
【设计模式精讲】26.策略模式(Strategy)
c++·设计模式·策略模式·uml
果果燕1 小时前
实习笔记(六)主机按钮状态上报完整流程
开发语言·c++·php
数据库小学妹1 小时前
什么是关系型数据库?零基础用一张订单表讲透原理、SQL与ACID
经验分享·关系型数据库·国产数据库·acid·关系数据库·关系模型·主键外键
是个西兰花2 小时前
网络基础1
linux·网络·c++·智能路由器
老赵的博客2 小时前
c++QT之动态库加载常见报错
c++·qt
hgfsjk2 小时前
跨境电商ERP系统软件哪个好?2026年选型指南
大数据·经验分享·笔记·其他
wabs6662 小时前
关于二叉树【429.N叉树的层序遍历的思考】
数据结构·c++·算法·leetcode·二叉树
虹科数字化与AR2 小时前
AR远程医疗解决方案对比:技术特点与临床应用分析
经验分享
hetao17338372 小时前
2026-09-08 hetao1733837 的刷题记录
c++·算法
码匠许师傅2 小时前
【设计模式精讲】25.状态模式(State)
c++·ui·设计模式·状态模式·uml