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 static TreeNode head; // 形成的链表头节点 private static TreeNode pre; // 记录中序遍历的前一个节点 public TreeNode Convert(TreeNode pRootOfTree) { if (pRootOfTree == null) { return null; } Convert(pRootOfTree.left); if (pre == null) { // 找到最小值 head = pre = pRootOfTree; } else { // 使得 pre 和 pRootOfTree 构成双向链表 pre.right = pRootOfTree; pRootOfTree.left = pre; pre = pRootOfTree; } Convert(pRootOfTree.right); return head; } }