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

二叉搜索树与双向链表

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];    //返回数组头(也就是链表头)
    }
};


全部评论

相关推荐

不愿透露姓名的神秘牛友
09-24 11:13
点赞 评论 收藏
分享
面试拷打成m:我感觉他说的挺对的,感觉我找不到工作也要去送外卖了,至少饿不死
点赞 评论 收藏
分享
09-17 17:09
门头沟学院 Java
雨忄:有人给出过解法,拖晚点去,然后到时候再找其他理由商量,既增加他们的筛人成本,不一定会给你收回offer ,也能占位避免工贼
秋招的嫡长offer
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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