/*

struct TreeNode {

    int val;

    struct TreeNode *left;

    struct TreeNode *right;

    TreeNode(int x) :

            val(x), left(NULL), right(NULL) {

    }

};*/

class Solution {

public:

    vector<TreeNode *> data;

    TreeNode* Convert(TreeNode* pRootOfTree) {

        if(pRootOfTree==NULL){

            return NULL;

        }

        GetData(pRootOfTree);

        for(int i=1;i<=data.size()-1;i+=1){

            data[i]->left=data[i-1];

            data[i-1]->right=data[i];

        }

        return data[0];

    }

    //使用中序遍历的方法

    void GetData(TreeNode* tree){

        if(tree==NULL){

            return;

        }

        else{

            if(tree->left!=NULL){

                GetData(tree->left);

            }

            data.push_back(tree);

            if(tree->right!=NULL){

                GetData(tree->right);

            }

        }

    }

};