Skip to content

Commit 11cf41b

Browse files
committed
✅ [530] Pre order!!!
1 parent 1e60471 commit 11cf41b

File tree

2 files changed

+78
-62
lines changed

2 files changed

+78
-62
lines changed

530/my_solution.js

+70-16
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,63 @@ class TreeNode {
1010
* @return {number}
1111
*/
1212
const getMinimumDifference = (root) => {
13-
// console.log(Infinity - 1)
14-
// console.log(1 - Infinity)
15-
let queue = [root], list = [];
16-
while (queue.length > 0) {
17-
let curr = queue.shift(), left = curr.left, right = curr.right;
18-
list.push(curr.val);
19-
if (null !== left) queue.push(left);
20-
if (null !== right) queue.push(right);
13+
let list = [], visitedList = [];
14+
// while (queue.length > 0) {
15+
// let curr = queue.shift(), left = curr.left, right = curr.right;
16+
// list.push(curr.val);
17+
// if (null !== left) queue.push(left);
18+
// if (null !== right) queue.push(right);
19+
// }
20+
21+
// TODO: Study actually how to do a preorder i think my solution is not the best here
22+
const inOrder = (node) => {
23+
console.log(`node.val:`);
24+
console.log(node)
25+
console.log("list");
26+
console.log(list);
27+
// console.log(visitedList);
28+
29+
if (null === node) {
30+
// visitedList.pop(); // current
31+
let parent = visitedList.pop();
32+
if (undefined === parent) return;
33+
// console.log("visitedList");
34+
// console.log(visitedList);
35+
// console.log("parent");
36+
// console.log(parent);
37+
38+
list.push(parent.val);
39+
parent.left = null;
40+
return inOrder(parent.right);
41+
} else {
42+
visitedList.push(node);
43+
return inOrder(node.left);
44+
}
45+
// else {
46+
// // else if (null === node.right) {
47+
// // list.push(node.val);
48+
// // let parent = visitedList.pop();
49+
// // parent.left == null;
50+
// // return inOrder(parent);
51+
// // } else if (null !== node.left) {
52+
// // visitedList.push(node);
53+
// // return inOrder(node.left);
54+
// // } else if (null !== node.right) {
55+
// // visitedList.push(node);
56+
// // return inOrder(node.right);
57+
// // }
58+
// }
59+
// return inOrder();
2160
}
2261

23-
let min = Infinity, tmpMax = 0, tmpMin = Infinity;
62+
inOrder(root);
63+
64+
console.log(visitedList);
65+
console.log("list");
66+
console.log(list);
67+
68+
69+
// let min = Infinity, tmpMax = 0, tmpMin = Infinity;
2470
// for (let i = 0; i < list.length; i++) {
2571
// tmpMax = Math.max(tmpMax, list[i]);
2672
// tmpMin = Math.min(tmpMin, list[i]);
@@ -29,18 +75,26 @@ const getMinimumDifference = (root) => {
2975
// }
3076
// }
3177

78+
// let min = Infinity;
3279
// bruteforce
33-
for (let i = 0; i < list.length; i++) {
34-
for (let j = 0; j < list.length; j++) {
35-
if (i === j) continue;
36-
min = Math.min(min, Math.abs(list[i] - list[j]))
37-
}
80+
// for (let i = 0; i < list.length; i++) {
81+
// for (let j = 0; j < list.length; j++) {
82+
// if (i === j) continue;
83+
// min = Math.min(min, Math.abs(list[i] - list[j]))
84+
// }
85+
// }
86+
87+
let prev = list.shift(), min = Infinity;
88+
while (list.length > 0) {
89+
let curr = list.shift();
90+
min = Math.min(min, curr - prev);
91+
prev = curr;
3892
}
3993

40-
console.log(list)
41-
console.log(min)
94+
return min;
4295
};
4396

97+
4498
// [4,2,6,1,3]
4599
// let x = getMinimumDifference(new TreeNode(4,
46100
// new TreeNode(2, new TreeNode(1), new TreeNode(3)), new TreeNode(6, new TreeNode(5))))

530/solution.js

+8-46
Original file line numberDiff line numberDiff line change
@@ -10,66 +10,28 @@ class TreeNode {
1010
* @return {number}
1111
*/
1212
const getMinimumDifference = (root) => {
13-
let queue = [root], list = [], visitedList = [];
14-
// while (queue.length > 0) {
15-
// let curr = queue.shift(), left = curr.left, right = curr.right;
16-
// list.push(curr.val);
17-
// if (null !== left) queue.push(left);
18-
// if (null !== right) queue.push(right);
19-
// }
13+
let list = [], visitedList = [];
2014

2115
const inOrder = (node) => {
2216
if (null === node) {
23-
visitedList.pop(); // current
2417
let parent = visitedList.pop();
18+
if (undefined === parent) return;
2519
list.push(parent.val);
2620
parent.left = null;
27-
return inOrder(parent);
28-
} else if (null === node.left) {
29-
visitedList.push(node);
30-
list.push(node.val);
31-
return inOrder(node.right);
21+
return inOrder(parent.right);
3222
} else {
3323
visitedList.push(node);
3424
return inOrder(node.left);
3525
}
36-
// else {
37-
// // else if (null === node.right) {
38-
// // list.push(node.val);
39-
// // let parent = visitedList.pop();
40-
// // parent.left == null;
41-
// // return inOrder(parent);
42-
// // } else if (null !== node.left) {
43-
// // visitedList.push(node);
44-
// // return inOrder(node.left);
45-
// // } else if (null !== node.right) {
46-
// // visitedList.push(node);
47-
// // return inOrder(node.right);
48-
// // }
49-
// }
50-
// return inOrder();
5126
}
5227

5328
inOrder(root);
5429

55-
console.log(visitedList);
56-
console.log(list);
57-
// let min = Infinity, tmpMax = 0, tmpMin = Infinity;
58-
// for (let i = 0; i < list.length; i++) {
59-
// tmpMax = Math.max(tmpMax, list[i]);
60-
// tmpMin = Math.min(tmpMin, list[i]);
61-
// if (undefined !== list[i + 1]) {
62-
// min = Math.min(min, Math.abs(list[i + 1] - tmpMax), Math.abs(list[i + 1] - tmpMin))
63-
// }
64-
// }
65-
66-
let min = Infinity;
67-
// bruteforce
68-
for (let i = 0; i < list.length; i++) {
69-
for (let j = 0; j < list.length; j++) {
70-
if (i === j) continue;
71-
min = Math.min(min, Math.abs(list[i] - list[j]))
72-
}
30+
let prev = list.shift(), min = Infinity;
31+
while (list.length > 0) {
32+
let curr = list.shift();
33+
min = Math.min(min, curr - prev);
34+
prev = curr;
7335
}
7436

7537
return min;

0 commit comments

Comments
 (0)