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 {
    TreeNode current = null;
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree == null) return null;
        TreeNode startHead = pRootOfTree;
        while(startHead.left != null){
            startHead = startHead.left;
        }
        midOrder(pRootOfTree);
        return startHead;
    }

    private void midOrder(TreeNode root){
        if(root == null) return;
        midOrder(root.left);
        root.left = current;
        if(current != null){
            current.right = root;
        }
        current = root;
        midOrder(root.right);
    }
}