Python Solution:
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: #1. How to find 2 swapped numbers in an ascending array? # 1 2 3 4 5 -> swap 2, 5 -> 1 5 3 4 2 # Find swapped numbers when descending order appear #2. def inorder_traversal(node): # inorder_traversal(node.left) # value=node.val # inorder_traversal(node.right) def recoverTree(self, root): def inorder_traversal(node: TreeNode): nonlocal swapNode1,swapNode2,preNode if node is None: return inorder_traversal(node.left) if preNode and node.val < preNode.val: swapNode2 = node # find bigger swapped node if swapNode1 is None: swapNode1 = preNode # find smaller swapped node else: return preNode = node inorder_traversal(node.right) swapNode1 = swapNode2 = preNode = None inorder_traversal(root) swapNode1.val, swapNode2.val = swapNode2.val, swapNode1.val #Time complexity: O(n) #Space complexity: O(n)
Time Complexity: O(n)
Space Complexity: O(n)
Feeling tired? You can also try our free online no-installation required casual games: Here Please consider to follow my youtube channel to support me: