每日一题.
99.恢复二叉搜索树
利用题干的条件,可以得到思路,中序遍历,然后找到错位的数字们(可能一对,或者两对)然后交换位置即可,这道题的时间复杂度没有多少优化空间,主要在于优化空间复杂度。
可以将中序遍历的数组存起来,也可以利用pre变量,节省空间,在中序遍历的时候就把错位的数对找出来,链接的方法二和官方题解的方法二分别是用递归和迭代进行中序遍历的时候如何描述pre变量的变化。有时间应该复习一下。
https://leetcode-cn.com/problems/recover-binary-search-tree/solution/san-chong-jie-fa-xiang-xi-tu-jie-99-hui-fu-er-cha-/
解法三:
https://leetcode-cn.com/problems/recover-binary-search-tree/solution/yi-wen-zhang-wo-morrisbian-li-suan-fa-by-a-fei-8/
莫里斯遍历,按照题干要求,尽可能优化到空间复杂度为O1,主要思想是,在一个节点m的左子树里找到最大节点(尽可能右,这个节点肯定会是右子树为null的),然后将他的右子树指回m,这样,就不需要额外的栈空间来维持中序递归的顺序正确,但是这个方法实际上是慢一点的,因为他的时间复杂度是明确的2N。
20200808笔记.99
最新推荐文章于 2022-03-17 17:03:58 发布