class Solution {
public:
vector<int> a;
void recordTree(TreeNode* root)
{
if(root->left) recordTree(root->left);
a.push_back(root->val);
if(root->right) recordTree(root->right);
}
int n=0;
void returnTree(TreeNode* root)
{
if(root->left) returnTree(root->left);
root->val=a[n];
n++;
if(root->right) returnTree(root->right);
}
void recoverTree(TreeNode* root) {
recordTree(root);
int i,j;
for(i=0;i<size(a)-1;i++)
for(j=i+1;j<size(a);j++)
if(a[i]>a[j]) swap(a[i],a[j]);
returnTree(root);
}
};
思路:将二叉搜索树内的数据按顺序记录入容器a中,对a进行排序,再将数据导入二叉树中,得到正确结果。