Correct BST with two nodes swapped

Binary Search Trees FAQs Hard

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