输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
递归方法
public TreeNode Convert(TreeNode root) {
if(root==null) return null;
TreeNode left = Convert(root.left);
TreeNode p = left;
while(p!=null&&p.right!=null){
p = p.right;
}
if(p!=null){
p.right=root;
root.left=p;
}else{
root.left=null;
}
TreeNode right = Convert(root.right);
if(right!=null){
root.right = right;
right.left = root;
}else{
root.right=null;
}
return left!=null?left:root;
}
网友评论