题目要求:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
解决思路:
1. 采用中序遍历+递归;
2. 中序遍历顺序为:左+中+右;BSTreeNode * p =NULL;
3.定义一个空指针p,p一直指向双向链表的最右端节点,最开始双向链表为空,p=NULL,中序遍历时,将当前节点的左指针指向p,p的右指针指向当前节点,然后p指向当前节点,
依次进行到底。
void visit(BSTreeNode * n)
if(n->left!=NULL)visit(n->left);
n->left=p;
if(p!=NULL)
p->right=n;
p=n;
if(n->right!=NULL)visit(n->right);
}