// 题目描述
// 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。
// 要求不能创建任何新的结点,只能调整树中结点指针的指向。
public static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public static TreeNode Convert(TreeNode pRootOfTree) {
if (pRootOfTree==null||pRootOfTree.left==null&&pRootOfTree.right==null){
return pRootOfTree;
}
//左子树
TreeNode left=Convert(pRootOfTree.left);
//保存头结点
TreeNode head=left;
//找到最后的位置
while (left!=null&&left.right!=null){
left = left.right;
}
//
if (left!=null){
pRootOfTree.left=left;
left.right=pRootOfTree;
}
// pRootOfTree.left=Convert(pRootOfTree.left);
//又子树
TreeNode right=Convert(pRootOfTree.right);
if (right!=null){
pRootOfTree.right=right;
right.left=pRootOfTree;
}
return head!=null?head:pRootOfTree;
}