二叉搜索树转换为排序双向链表,需利用二叉搜索树的特点:
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
则中序遍历序列即为有序的。

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