File tree 2 files changed +34
-1
lines changed
2 files changed +34
-1
lines changed Original file line number Diff line number Diff line change 91
91
| 96 | [ Unique Binary Search Trees] ( https://leetcode.com/problems/unique-binary-search-trees ) | [ ![ Java] ( assets/java.png )] ( src/UniqueBinarySearchTrees.java ) | |
92
92
| 97 | [ Interleaving String] ( https://leetcode.com/problems/interleaving-string ) | [ ![ Java] ( assets/java.png )] ( src/InterleavingString.java ) | |
93
93
| 98 | [ Validate Binary Search Tree] ( https://leetcode.com/problems/validate-binary-search-tree ) | [ ![ Java] ( assets/java.png )] ( src/ValidateBinarySearchTree.java ) | |
94
- | 99 | [ Recover Binary Search Tree] ( https://leetcode.com/problems/recover-binary-search-tree ) | | |
94
+ | 99 | [ Recover Binary Search Tree] ( https://leetcode.com/problems/recover-binary-search-tree ) | [ ![ Java ] ( assets/java.png )] ( src/RecoverBinarySearchTree.java ) | |
95
95
| 100 | [ Same Tree] ( https://leetcode.com/problems/same-tree ) | [ ![ Java] ( assets/java.png )] ( src/SameTree.java ) [ ![ Python] ( assets/python.png )] ( python/same_tree.py ) | |
96
96
| 101 | [ Symmetric Tree] ( https://leetcode.com/problems/symmetric-tree ) | [ ![ Java] ( assets/java.png )] ( src/SymmetricTree.java ) [ ![ Python] ( assets/python.png )] ( python/symmetric_tree.py ) | |
97
97
| 102 | [ Binary Tree Level Order Traversal] ( https://leetcode.com/problems/binary-tree-level-order-traversal ) | [ ![ Java] ( assets/java.png )] ( src/BinaryTreeLevelOrderTraversal.java ) | |
Original file line number Diff line number Diff line change
1
+ // https://leetcode.com/problems/recover-binary-search-tree
2
+ // T: O(n)
3
+ // S: O(log(n))
4
+
5
+ public class RecoverBinarySearchTree {
6
+ TreeNode first , second , previous = new TreeNode (Integer .MIN_VALUE );
7
+
8
+ public void recoverTree (TreeNode root ) {
9
+ inorder (root );
10
+ swapValues (first , second );
11
+ }
12
+
13
+ private void inorder (TreeNode root ) {
14
+ if (root == null ) return ;
15
+ inorder (root .left );
16
+
17
+ if (first == null && root .val < previous .val ) {
18
+ first = previous ;
19
+ }
20
+ if (first != null && root .val < previous .val ) {
21
+ second = root ;
22
+ }
23
+ previous = root ;
24
+
25
+ inorder (root .right );
26
+ }
27
+
28
+ private void swapValues (TreeNode a , TreeNode b ) {
29
+ int temp = a .val ;
30
+ a .val = b .val ;
31
+ b .val = temp ;
32
+ }
33
+ }
You can’t perform that action at this time.
0 commit comments