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;
}
}