使用中序遍历按从小到大顺序遍历节点;保存首节点(首节点的左子节点设为空)和前节点;将当前节点作为前节点的右子节点,前节点作为当前节点的左子节点,并将前节点引用指向当前节点;最后将前节点的右子节点设为空

public class Solution {
    private TreeNode preNode;
    private TreeNode headNode;
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree == null){
            return null;
        }
        Convert(pRootOfTree.left);
        if(headNode == null){
            headNode = pRootOfTree;
            preNode = headNode;
            preNode.left = null;
        }else{
            preNode.right = pRootOfTree;
            pRootOfTree.left = preNode;
            preNode = pRootOfTree;
        }
        Convert(pRootOfTree.right);
        preNode.right = null;
        return headNode;
    }
}