/**二叉搜索树的中序遍历就是递增的排序,所以就运用中序遍历方法来做。
     * 算法思想:
     * 中序遍历的步骤,只不过在递归的中间部分不是输出节点值,而是调整指针指向。
     *     10
     *     /\
     *    5 12
     *   /\
     *  4 7
*  步骤记住就行,第一次执行,到4的时候,head和resulthead都指向这个
*  指针调整的其中一步:4是head 5是pRootOfTree 然后调整head右指向5,5左指向4,
*  然后5变成head就行了。
 */
public class TreeNode{
        int value;
        TreeNode left;
        TreeNode right;

        public TreeNode(int value){
            this.value=value;
        }
    }

    TreeNode head=null;//表示转换后最后一个节点
    TreeNode resultHead=null;//表示将二叉搜索树转为双向链表后的第一个节点

    public TreeNode Convert(TreeNode pRootOfTree){
        ConverSub(pRootOfTree);
        return resultHead;
    }

    public void ConverSub(TreeNode pRootOfTree){
        if(pRootOfTree==null){
            return ;
        }
        ConverSub(pRootOfTree.left);
        if(head==null){
            head=pRootOfTree;
            resultHead=pRootOfTree;
        }
        else{//将根节点加入双向链表中,设置左右连接
            head.right=pRootOfTree;
            pRootOfTree.left=head;
            head=pRootOfTree;
        }
        ConverSub(pRootOfTree.right);
    }