输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
中序遍历,代码
class Solution {
public:
TreeNode* Convert(TreeNode* root)
{
if(!root)
return nullptr;
Inorder(root);
return res;
}
void Inorder(TreeNode *root){
if(!root)
return;
Inorder(root->left);
if(!cur){
cur=root;
res=root;
}
else{
cur->right=root;
root->left=cur;
cur=root;
}
Inorder(root->right);
}
private:
TreeNode *cur=nullptr,*res=nullptr;
};
这篇写的详细:https://blog.csdn.net/yanxiaolx/article/details/52073221