将二叉搜索树转换为双向链表
二叉搜索树的定义:
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
它的左、右子树也分别为二叉排序树。
题目描述:输入一棵二叉搜索树,将其转换为排序的双向链表,
要求是不能创建任何新的节点,只能调整树中节点指针的指向。
public Node prev = null;
public void ConvertChild(Node root){
if(root == null){
return;
}
ConvertChild(root.left);
root.left = prev;
if(prev != null){
prev.right = root;
}
prev = root;
ConvertChild(root.right);
}
public Node Convert(Node pRootOfTree){
ConvertChild(pRootOfTree);
Node head = pRootOfTree;
while(head != null && head.left != null){
head = head.left;
}
return head;
}
//转换完之后打印判断结果是否正确
public void display(Node head) {
Node cur = head;
while(cur != null) {
System.out.print(cur.value + " ");
cur = cur.right;
}
System.out.println();
}