题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
//全局变量,用来存储当前的最后节点。
private TreeNode realLast = null;
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree==null) return null;
else if(pRootOfTree.left==null&&pRootOfTree.right==null){
return pRootOfTree;
}
convetNode(pRootOfTree);
while(realLast.left!=null){
realLast=realLast.left;
}
return realLast;
}
void convetNode(TreeNode node){
if(node==null){
return ;
}
if(node.left!=null){
convetNode(node.left);
}
node.left=realLast;
if(realLast!=null){
realLast.right=node;
}
realLast=node;
if(node.right!=null){
convetNode(node.right);
}
}
}