Saturday, December 2, 2017

[LeetCode]Recover Binary Search Tree

Inorder traversal,因为中序遍历保证得到从小到大的序列,我们就可以知道是哪两个节点需要交换。比如:

  1. 中序遍历的结果是132,我们可以得知2和3需要交换
  2. 中序遍历的结果是15342,我们可以得知5和2需要交换
策略就是,发现reverse pair之后,就假定这两个是需要交换的node1和node2,对应1的情况。如果发现了第二对reverse pair,那么需要交换的就是第一对里的node1和第二对里的node2,时间复杂度O(n),常数空间,代码如下:


No comments:

Post a Comment