思路:观察输出双向链表顺序可知为中序遍历,所以利用中序遍历,直接构造

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

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

    }

}
*/
public class Solution {
    TreeNode dummy;
    TreeNode preNode;
    public void inOrder(TreeNode root){
        if(root == null){
            return;
        }
        inOrder(root.left);
        preNode.right = root;
        root.left = preNode;
        preNode = root;
        inOrder(root.right);   
    }
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree == null){
            return null;
        }
        dummy = new TreeNode(-1); //虚拟节点
        preNode = dummy;
        inOrder(pRootOfTree);
        TreeNode head = dummy.right;
        dummy.right = null;
        head.left = null;
        return head;
    }
}