二叉排序树转化为双向链表

复制代码
中序遍历即可。只需要记录一个pre指针即可。
高分答案也太绕了吧

class Solution {
public:
    TreeNode* Convert(TreeNode* pRootOfTree)
    {
        if(pRootOfTree == nullptr) return nullptr;
        TreeNode* pre = nullptr;
        
        convertHelper(pRootOfTree, pre);
        
        TreeNode* res = pRootOfTree;
        while(res ->left)
            res = res ->left;
        return res;
    }
    
    void convertHelper(TreeNode* cur, TreeNode*& pre)
    {
        if(cur == nullptr) return;
        
        convertHelper(cur ->left, pre);
        
        cur ->left = pre;
        if(pre) pre ->right = cur;
        pre = cur;
        
        convertHelper(cur ->right, pre);
        
        
        
    }
};
复制代码

 

posted @   yizhixiaozhu  阅读(0)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示