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

二叉搜索树与双向链表

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

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/
class Solution {
public:
    vector<TreeNode*> v;
    TreeNode* Convert(TreeNode* pRootOfTree) {
         if (pRootOfTree == nullptr)
            return pRootOfTree;

        stack<TreeNode*> ss;
        TreeNode* p = pRootOfTree; //p is a Traversing pointer
        while(p || !ss.empty())
        {
            if(p){
                ss.push(p);
                p=p->left;
            }
            else{
                p = ss.top();
                ss.pop();

                v.push_back(p);
                p=p->right;
            }
        }
        v.front()->left = nullptr;
        v.back()->right = nullptr;
        for(int i=0;i<v.size()-1;i++)
        {
            v[i]->right=v[i+1];
            v[i+1]->left=v[i];
        }
//         v[v.size()-1]->left=v[v.size()-2];
        return v.front();
    }
};
全部评论

相关推荐

头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
06-04 09:27
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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