二叉搜索树与双向链表

原文地址:https://www.jianshu.com/p/d8637056a253

时间限制:1秒 空间限制:32768K

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

我的代码

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
public:
    TreeNode* Convert(TreeNode* pRootOfTree)
    {
        if(pRootOfTree==nullptr)
            return nullptr;
        TreeNode* pre=nullptr;
        ConvertCore(pRootOfTree,pre);
        TreeNode* res=pRootOfTree;
        while(res->left)
            res=res->left;
        return res;
    }
    void ConvertCore(TreeNode* pRoot, TreeNode* &pre){
        if(pRoot==nullptr)
            return;
        ConvertCore(pRoot->left,pre);
        pRoot->left=pre;
        if(pre)
            pre->right=pRoot;
        pre=pRoot;
        ConvertCore(pRoot->right,pre);
        return;
    }
};

运行时间:4ms
占用内存:504k

原文地址:https://www.cnblogs.com/cherrychenlee/p/10796710.html