输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向
中序遍历满足递增顺序
用一个额外的pre变量记录前一个节点
class Solution {
Node pre, head;
public Node treeToDoublyList(Node root) {
if(root == null)
return null;
inOrder(root);
head.left = pre;
pre.right = head;
return head;
}
private void inOrder(Node cur){
if(cur == null){
return;
}
inOrder(cur.left);
if(pre != null){
pre.right = cur;
}else{
head = cur;
}
cur.left = pre;
pre = cur;
inOrder(cur.right);
}
}