File tree 5 files changed +108
-0
lines changed
algorithms/MinimumAbsoluteDifferenceInBst
5 files changed +108
-0
lines changed Original file line number Diff line number Diff line change @@ -70,6 +70,7 @@ All solutions will be accepted!
70
70
| 575| [ Distribute Candies] ( https://leetcode-cn.com/problems/distribute-candies/description/ ) | [ java/py/js] ( ./algorithms/DistributeCandies ) | Easy|
71
71
| 21| [ Merge Two Sorted Lists] ( https://leetcode-cn.com/problems/merge-two-sorted-lists/description/ ) | [ java/py/js] ( ./algorithms/MergeTwoSortedLists ) | Easy|
72
72
| 88| [ Merge Sorted Array] ( https://leetcode-cn.com/problems/merge-sorted-array/description/ ) | [ java/py/js] ( ./algorithms/MergeSortedArray ) | Easy|
73
+ | 530| [ Minimum Absolute Difference In Bst] ( https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/description/ ) | [ java/py/js] ( ./algorithms/MinimumAbsoluteDifferenceInBst ) | Easy|
73
74
74
75
# Database
75
76
| #| Title| Solution| Difficulty|
Original file line number Diff line number Diff line change
1
+ # Minimum Absolute Difference In Bst
2
+ This problem is easy to solve by inorder traversal
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * public class TreeNode {
4
+ * int val;
5
+ * TreeNode left;
6
+ * TreeNode right;
7
+ * TreeNode(int x) { val = x; }
8
+ * }
9
+ */
10
+ class Solution {
11
+ public int getMinimumDifference (TreeNode root ) {
12
+ List <TreeNode > stack = new ArrayList <TreeNode >();
13
+ List <Integer > values = new ArrayList <Integer >();
14
+ Map <TreeNode , Boolean > traveredMap = new HashMap <TreeNode , Boolean >();
15
+ int minDiff = Integer .MAX_VALUE ;
16
+
17
+ stack .add (root );
18
+ while (stack .size () > 0 ) {
19
+ int lastIndex = stack .size () - 1 ;
20
+ TreeNode node = stack .get (lastIndex );
21
+ if (node .left != null && traveredMap .get (node ) == null ) {
22
+ traveredMap .put (node , true );
23
+ stack .add (node .left );
24
+ } else {
25
+ stack .remove (lastIndex );
26
+ values .add (node .val );
27
+ if (node .right != null ) {
28
+ stack .add (node .right );
29
+ }
30
+ }
31
+ }
32
+ for (int i = 1 ; i < values .size (); i ++) {
33
+ minDiff = Math .min (minDiff , values .get (i ) - values .get (i - 1 ));
34
+ }
35
+ return minDiff ;
36
+ }
37
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * function TreeNode(val) {
4
+ * this.val = val;
5
+ * this.left = this.right = null;
6
+ * }
7
+ */
8
+ /**
9
+ * @param {TreeNode } root
10
+ * @return {number }
11
+ */
12
+ var getMinimumDifference = function ( root ) {
13
+ let stack = [ root ] ,
14
+ values = [ ] ,
15
+ minDiff = null
16
+
17
+ while ( stack . length > 0 ) {
18
+ let node = stack [ stack . length - 1 ]
19
+ if ( node . left && node . travered === undefined ) {
20
+ node . travered = true
21
+ stack . push ( node . left )
22
+ } else {
23
+ stack . pop ( )
24
+ values . push ( node . val )
25
+ if ( node . right ) stack . push ( node . right )
26
+ }
27
+ }
28
+
29
+ for ( let i = 1 ; i < values . length ; i ++ ) {
30
+ if ( minDiff == null ) minDiff = values [ i ] - values [ i - 1 ]
31
+ else minDiff = Math . min ( minDiff , values [ i ] - values [ i - 1 ] )
32
+ }
33
+ return minDiff
34
+ } ;
Original file line number Diff line number Diff line change
1
+ # Definition for a binary tree node.
2
+ # class TreeNode(object):
3
+ # def __init__(self, x):
4
+ # self.val = x
5
+ # self.left = None
6
+ # self.right = None
7
+
8
+ class Solution (object ):
9
+ def getMinimumDifference (self , root ):
10
+ """
11
+ :type root: TreeNode
12
+ :rtype: int
13
+ """
14
+ # inorder traversal
15
+ stack = [root ]
16
+ travered_map = {}
17
+ values = []
18
+ while len (stack ) > 0 :
19
+ node = stack [- 1 ]
20
+ if node .left and travered_map .get (node ) == None :
21
+ travered_map [node ] = True
22
+ stack .append (node .left )
23
+ else :
24
+ stack .pop ()
25
+ values .append (node .val )
26
+ if node .right :
27
+ stack .append (node .right )
28
+ min_diff = None
29
+ for i in range (1 , len (values )):
30
+ if min_diff == None :
31
+ min_diff = values [i ] - values [i - 1 ]
32
+ else :
33
+ min_diff = min (min_diff , values [i ] - values [i - 1 ])
34
+ return min_diff
You can’t perform that action at this time.
0 commit comments