题目
题目来源: 牛客网
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
实现
void _Convert(TreeNode* root, TreeNode** prev){
if(!root){
return;
}
_Convert(root->left, prev);
root->left = *prev;
if(*prev){
(*prev)->right = root;
}
*prev = root;
_Convert(root->right, prev);
}
TreeNode* Convert(TreeNode* pRootOfTree)
{
TreeNode* prev = NULL;
TreeNode* head;
_Convert(pRootOfTree, &prev);
head = pRootOfTree;
while(head && head->left){
head = head->left;
}
return head;
}