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