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

中序遍历即可。只需要记录一个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 @ 2025-03-04 19:13  yizhixiaozhu  阅读(10)  评论(0)    收藏  举报