题解 | #二叉搜索树与双向链表#

二叉搜索树与双向链表

http://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5

中序遍历+数组
class Solution {
public:
    vector<TreeNode*> myvec;
    
    void dfs(TreeNode* curr){
        if(!curr) return;
        
        dfs(curr->left);
        myvec.push_back(curr);
        dfs(curr->right);
    }
    
    void opt(vector<TreeNode*> arr){
        int size= arr.size();
        for(int i=0;i<size;i++){
            if(i==0) arr[0]->right=arr[1];
            else if(i==size-1) arr[size-1]->left=arr[size-2];
            else{
                arr[i]->left= arr[i-1];
                arr[i]->right= arr[i+1];
            }
        }
    }
    
    TreeNode* Convert(TreeNode* pRootOfTree) {
        if(!pRootOfTree) return nullptr;
        TreeNode* curr= pRootOfTree;
        
        dfs(curr);    //中序遍历存到数组
        opt(myvec);    //在数组里进行节点指针调整
        
        return myvec[0];    //返回数组头(也就是链表头)
    }
};


全部评论

相关推荐

买蜜雪也用卷:我觉得应该没有哪个人敢说自己熟练使用git,代码分支一复杂还是得慢慢寻思一下的,不过基本的拉代码提交代码还有分支什么的是应该会
点赞 评论 收藏
分享
喜欢飞来飞去的雪碧在...:可以试一试字节
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务