Skip to content

Commit 8228b78

Browse files
committed
✨ [100]
1 parent b4a543b commit 8228b78

File tree

3 files changed

+178
-1
lines changed

3 files changed

+178
-1
lines changed

100/my_solution.js

+136
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
class TreeNode {
2+
constructor(val, left, right) {
3+
this.val = (val === undefined ? 0 : val);
4+
this.left = (left === undefined ? null : left);
5+
this.right = (right === undefined ? null : right);
6+
}
7+
}
8+
9+
/**
10+
* @param {TreeNode} p
11+
* @param {TreeNode} q
12+
* @return {boolean}
13+
*/
14+
const isSameTree = (p, q) => {
15+
if (p?.val !== q?.val) return false;
16+
let pQueue = [p], qQueue = [q];
17+
18+
const extractLeft = (node, list) => {
19+
if (null === node) return;
20+
list.push(node.left);
21+
return node.left?.val;
22+
}
23+
24+
const extractRight = (node, list) => {
25+
if (null == node) return;
26+
list.push(node.right);
27+
return node.right?.val;
28+
}
29+
30+
while (0 < pQueue.length && 0 < qQueue.length) {
31+
let currP = pQueue.shift(), currQ = qQueue.shift();
32+
console.log(">>>>")
33+
console.log(pQueue)
34+
console.log(qQueue)
35+
console.log("-> currP")
36+
console.log(currP)
37+
console.log("-> currQ")
38+
console.log(currQ)
39+
40+
if (currP?.val !== currQ?.val) return false;
41+
// console.log("-> p")
42+
// // console.log(pQueue)
43+
// console.log(extractLeft(currP, pQueue))
44+
// console.log(extractLeft(currQ, pQueue))
45+
// // console.log(pQueue)
46+
// console.log(extractLeft(currP, pQueue) !== extractLeft(currQ, pQueue))
47+
//
48+
// console.log("-> q")
49+
// // console.log(qQueue)
50+
// console.log(extractRight(currP, qQueue))
51+
// console.log(extractRight(currQ, qQueue))
52+
// // console.log(qQueue)
53+
// console.log(extractRight(currP, qQueue) !== extractRight(currQ, qQueue))
54+
55+
extractLeft(currP, pQueue)
56+
extractLeft(currQ, qQueue)
57+
extractRight(currP, pQueue)
58+
extractRight(currQ, qQueue)
59+
60+
// if (extractLeft(currP, pQueue) !== extractLeft(currQ, pQueue) ||
61+
// extractRight(currP, qQueue) !== extractRight(currQ, qQueue)) return false;
62+
}
63+
64+
return true;
65+
};
66+
67+
let x;
68+
69+
// x = isSameTree(new TreeNode(
70+
// 1,
71+
// new TreeNode(2),
72+
// new TreeNode(3)
73+
// ), new TreeNode(
74+
// 1,
75+
// new TreeNode(3),
76+
// new TreeNode(2)
77+
// )
78+
// )
79+
80+
// x = isSameTree(
81+
// new TreeNode(
82+
// 1,
83+
// new TreeNode(2),
84+
// new TreeNode(3)
85+
// ),
86+
// new TreeNode(
87+
// 1,
88+
// new TreeNode(2),
89+
// new TreeNode(3)
90+
// )
91+
// )
92+
93+
// x = isSameTree(
94+
// new TreeNode(
95+
// 1,
96+
// null,
97+
// new TreeNode(1)
98+
// ),
99+
// new TreeNode(
100+
// 1,
101+
// null,
102+
// new TreeNode(1)
103+
// )
104+
// )
105+
//
106+
// x = isSameTree(
107+
// new TreeNode(
108+
// 1,
109+
// null,
110+
// new TreeNode(2,
111+
// new TreeNode(3)
112+
// )
113+
// ),
114+
// new TreeNode(
115+
// 1,
116+
// null,
117+
// new TreeNode(2,
118+
// new TreeNode(3)
119+
// )
120+
// )
121+
// )
122+
123+
x = isSameTree(
124+
new TreeNode(
125+
1,
126+
new TreeNode(2)
127+
),
128+
new TreeNode(
129+
1,
130+
null,
131+
new TreeNode(2)
132+
)
133+
)
134+
135+
console.log("Result")
136+
console.log(x)

100/solution.js

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class TreeNode {
2+
constructor(val, left, right) {
3+
this.val = (val === undefined ? 0 : val);
4+
this.left = (left === undefined ? null : left);
5+
this.right = (right === undefined ? null : right);
6+
}
7+
}
8+
9+
/**
10+
* @param {TreeNode} p
11+
* @param {TreeNode} q
12+
* @return {boolean}
13+
*/
14+
const isSameTree = (p, q) => {
15+
if (p?.val !== q?.val) return false;
16+
let pQueue = [p], qQueue = [q];
17+
18+
const extractLeft = (node, list) => {
19+
if (null === node) return;
20+
list.push(node.left);
21+
return node.left?.val;
22+
}
23+
24+
const extractRight = (node, list) => {
25+
if (null == node) return;
26+
list.push(node.right);
27+
return node.right?.val;
28+
}
29+
30+
while (0 < pQueue.length && 0 < qQueue.length) {
31+
let currP = pQueue.shift(), currQ = qQueue.shift();
32+
if (currP?.val !== currQ?.val) return false;
33+
extractLeft(currP, pQueue)
34+
extractLeft(currQ, qQueue)
35+
extractRight(currP, pQueue)
36+
extractRight(currQ, qQueue)
37+
}
38+
39+
return true;
40+
};

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
- [76. Minimum Window Substring](./76/)
3737
- [79. Word Search](./79/)
3838
- [83. Remove Duplicates from Sorted List](./83/)
39+
- [100. Same Tree](./100/)
3940
- [104. Maximum Depth of Binary Tree](./104/)
4041
- [121. Best Time to Buy and Sell Stock](./121/)
4142
- [128. Longest Consecutive Sequence](./128/)
@@ -138,7 +139,7 @@ Batch create:
138139
NOTE: JS IS HERE
139140
-->
140141
```ssh
141-
chapter=1027 && mkdir ./$chapter && touch ./$chapter/my_solution.js && touch ./$chapter/solution.js && alias x="node ./$chapter/my_solution.js"
142+
chapter=100 && mkdir ./$chapter && touch ./$chapter/my_solution.js && touch ./$chapter/solution.js && alias x="node ./$chapter/my_solution.js"
142143
```
143144
> then you can use `x` for quick debug.
144145

0 commit comments

Comments
 (0)