输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
解析:二叉搜索树的中序遍历:升序
代码:
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
private TreeNode treeNode = null;;
public TreeNode Convert(TreeNode pRootOfTree) {
//a <- b -> c
// b <- c -> d
// c <- d -> e
if (pRootOfTree==null)
return null;
Convert(pRootOfTree.right);
if (treeNode!= null){
pRootOfTree.right=treeNode; //右节点指向大节点
treeNode.left=pRootOfTree; //左节点指向小节点
}
treeNode=pRootOfTree; //记录上次遍历到的节点
Convert(pRootOfTree.left); //继续遍历
return treeNode;
}
}