int midOrder(struct TreeNode **pre, struct TreeNode **err1, struct TreeNode **err2, struct TreeNode *root)
{
if (root == NULL) return 0;
if (midOrder(pre, err1, err2, root->left) == -1) return -1;
if (*pre != NULL && (*pre)->val > root->val) {
if (*err1 == NULL) {
*err1 = *pre;
*err2 = root;
} else {
*err2 = root;
return -1;
}
}
*pre = root;
if (midOrder(pre, err1, err2, root->right) == -1) return -1;
return 0;
}
void recoverTree(struct TreeNode* root){
struct TreeNode *pre = NULL;
struct TreeNode * err1 = NULL;
struct TreeNode * err2 = NULL;
midOrder(&pre, &err1, &err2, root);
int tmp;
tmp = err1->val;
err1->val = err2->val;
err2->val = tmp;
return;
}
作者:liqiang64
链接:https://leetcode-cn.com/problems/recover-binary-search-tree/solution/cyu-yan-zhong-xu-bian-li-yi-bian-ji-ke-kong-jian-f/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
99. 恢复二叉搜索树
最新推荐文章于 2024-05-11 20:01:37 发布