026二叉搜索树与双向链表
题目:
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
方法:递归法
思路:创建left和right两个指针,right用来指向最后添加的,left指向开头,用中序遍历从左中右的节点进行调用,然后进行一个两相邻节点的左右指针的互指,返回left左指针
代码:
//链表的左右指针,先开始指向开头,然后只移动右指针进行添加,最后返回左指针就是整个链表
TreeNode left=null;
TreeNode right=null;
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree==null) return null;
//递归到最左子树节点
Convert(pRootOfTree.left);
if(right==null){
left=right=pRootOfTree;
}else{
//双向链表,两边都要指向
right.right=pRootOfTree;
pRootOfTree.left=right;
right=pRootOfTree;
}
Convert(pRootOfTree.right);
return left;
}