import java.util.*;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {

    private TreeNode pre;
    private TreeNode head;

    public TreeNode Convert(TreeNode pRootOfTree) {
        // 解题思路:
        // 1、二叉搜索树符合中序遍历的规则 左、中、右
        // 2、说明最左节点就是链表的头节点
        // 3、建立2个指针,一个指向头节点,1一个指向前一个节点
        // 4、pre 指针的right = 当前节点,当前节点的left = pre
        //    然后pre右移

        if (pRootOfTree == null) {
            return null;
        }

        Convert( pRootOfTree.left);

        if (pre == null) {
            pre = pRootOfTree;
            head = pRootOfTree;
        } else {
            pre.right = pRootOfTree;
            pRootOfTree.left = pre;
            pre = pRootOfTree;
        }

        Convert( pRootOfTree.right);

        return head;
    }
}