欢迎光临散文网 会员登陆 & 注册

LeetCode-099-恢复二叉搜索树

2021-11-12 10:01 作者:雄狮虎豹  | 我要投稿

恢复二叉搜索树

题目描述:给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。

进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗?

示例说明请见LeetCode官网。

来源:力扣(LeetCode)   

链接:https://leetcode-cn.com/problems/recover-binary-search-tree/   

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:递归法

  • 首先,通过中序遍历得到二叉搜索树的所有节点allNodes,正常情况下,如果没有节点被错误的交换,allNodes所有节点应该是按升序排列,所以要找出被交换的2个节点;

  • 从后往前遍历allNodes,找到第一个值比前面的值小的节点,即为错误的第一个节点high;

  • high-1开始往前遍历allNodes,找到第一个值比high节点小的节点low,low+1位置的节点即为错误的第二个节点;

  • 交换low和high2个节点的值,即可恢复这棵树。

【每日寄语】 感谢不离不弃的你,让我知道仍有人爱我。感谢你的支持,不论今天有多挫折,我仍会勇敢地活下去。



LeetCode-099-恢复二叉搜索树的评论 (共 条)

分享到微博请遵守国家法律