/*
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;
	void Inorder(TreeNode* pRootOfTree)
	{
		if(!pRootOfTree)
		{
			return ;
		}
		Inorder(pRootOfTree->left);
		v.push_back(pRootOfTree);
		Inorder(pRootOfTree->right);
	}
    TreeNode* Convert(TreeNode* pRootOfTree) {
    //中序遍历即为链表顺序
		if(!pRootOfTree)
		{
			return nullptr;
		}
		Inorder(pRootOfTree);
	    for(int i=0;i<v.size();i++)
		{
			if(i!=0)
			{v[i]->left=v[i-1];}
			if(i!=v.size()-1)
			v[i]->right=v[i+1];
		}
		return v[0];
    }
};