Correct BST with two nodes swapped

Binary Search Trees FAQs Hard
  • Fun Fact: This problem mirrors a real-world issue that can occur in database recovery
  • Databases can sometimes experience inconsistencies due to errors, mistaken swaps, and so on
  • Programmers would need to rectify these inconsistencies without causing more errors by using algorithms similar to the solution of this problem
  • In fact, binary search trees, like the ones mentioned in the problem, are frequently used to store data in databases due to their efficient search, insert, and delete operations!

Given the root of a binary search tree (BST), where the values of exactly two nodes of the tree were swapped by mistake.Recover the tree without changing its structure.

Examples:

Input : root = [1, 3, null, null, 2]

Output : [3, 1, null, null, 2]

Explanation : 3 cannot be a left child of 1 because 3 > 1. Swapping 1 and 3 makes the BST valid.


Input : root = [3, 1, 4, null, null, 2]

Output : [2, 1, 4, null, null, 3]

Explanation : 2 cannot be in the right subtree of 3 because 2 < 3. Swapping 2 and 3 makes the BST valid.

Input : root = [2, 1, 3, null, null, 4]

Constraints

  • 1 <= Number of Nodes <= 104
  • -231 <= Node.val <= 231 - 1

Hints

  • "As we traverse in inorder (Left → Root → Right), the correct sequence should be in ascending order. If prev.val > curr.val, we found an out-of-order pair."
  • "Perform Morris Traversal to detect swapped nodes in O(1) space. Identify two misplaced nodes during traversal. Swap their values to restore BST properties."

Company Tags

Snowflake Epic Systems Teladoc Health Flipkart Riot Games Optum Alibaba Visa ARM KPMG JPMorgan Chase Rockstar Games OYO Rooms Shopify Western Digital Goldman Sachs Splunk Robinhood AMD IBM Instacart GE Healthcare McKinsey & Company HashiCorp HCL Technologies Google Microsoft Amazon Meta Apple Netflix Adobe