Skip to content

Commit 3a82e38

Browse files
authored
feat: add solutions to lc problem: No.1028 (#4099)
1 parent 57c8f3f commit 3a82e38

File tree

4 files changed

+248
-0
lines changed

4 files changed

+248
-0
lines changed

solution/1000-1099/1028.Recover a Tree From Preorder Traversal/README.md

+86
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,92 @@ public:
182182
};
183183
```
184184
185+
#### TypeScript
186+
187+
```ts
188+
function recoverFromPreorder(traversal: string): TreeNode | null {
189+
const stack: TreeNode[] = [];
190+
let i = 0;
191+
192+
while (i < traversal.length) {
193+
let depth = 0;
194+
while (i < traversal.length && traversal[i] === '-') {
195+
depth++;
196+
i++;
197+
}
198+
199+
let num = 0;
200+
while (i < traversal.length && !Number.isNaN(+traversal[i])) {
201+
num = num * 10 + +traversal[i];
202+
i++;
203+
}
204+
205+
// Create the new node
206+
const newNode = new TreeNode(num);
207+
208+
while (stack.length > depth) {
209+
stack.pop();
210+
}
211+
212+
if (stack.length > 0) {
213+
const i = stack.length - 1;
214+
if (stack[i].left === null) {
215+
stack[i].left = newNode;
216+
} else {
217+
stack[i].right = newNode;
218+
}
219+
}
220+
221+
stack.push(newNode);
222+
}
223+
224+
return stack.length ? stack[0] : null;
225+
}
226+
```
227+
228+
#### JavaScript
229+
230+
```js
231+
function recoverFromPreorder(traversal) {
232+
const stack = [];
233+
let i = 0;
234+
235+
while (i < traversal.length) {
236+
let depth = 0;
237+
while (i < traversal.length && traversal[i] === '-') {
238+
depth++;
239+
i++;
240+
}
241+
242+
let num = 0;
243+
while (i < traversal.length && !Number.isNaN(+traversal[i])) {
244+
num = num * 10 + +traversal[i];
245+
i++;
246+
}
247+
248+
// Create the new node
249+
const newNode = new TreeNode(num);
250+
251+
while (stack.length > depth) {
252+
stack.pop();
253+
}
254+
255+
if (stack.length > 0) {
256+
const i = stack.length - 1;
257+
if (stack[i].left === null) {
258+
stack[i].left = newNode;
259+
} else {
260+
stack[i].right = newNode;
261+
}
262+
}
263+
264+
stack.push(newNode);
265+
}
266+
267+
return stack.length ? stack[0] : null;
268+
}
269+
```
270+
185271
<!-- tabs:end -->
186272

187273
<!-- solution:end -->

solution/1000-1099/1028.Recover a Tree From Preorder Traversal/README_EN.md

+86
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,92 @@ public:
177177
};
178178
```
179179
180+
#### TypeScript
181+
182+
```ts
183+
function recoverFromPreorder(traversal: string): TreeNode | null {
184+
const stack: TreeNode[] = [];
185+
let i = 0;
186+
187+
while (i < traversal.length) {
188+
let depth = 0;
189+
while (i < traversal.length && traversal[i] === '-') {
190+
depth++;
191+
i++;
192+
}
193+
194+
let num = 0;
195+
while (i < traversal.length && !Number.isNaN(+traversal[i])) {
196+
num = num * 10 + +traversal[i];
197+
i++;
198+
}
199+
200+
// Create the new node
201+
const newNode = new TreeNode(num);
202+
203+
while (stack.length > depth) {
204+
stack.pop();
205+
}
206+
207+
if (stack.length > 0) {
208+
const i = stack.length - 1;
209+
if (stack[i].left === null) {
210+
stack[i].left = newNode;
211+
} else {
212+
stack[i].right = newNode;
213+
}
214+
}
215+
216+
stack.push(newNode);
217+
}
218+
219+
return stack.length ? stack[0] : null;
220+
}
221+
```
222+
223+
#### JavaScript
224+
225+
```js
226+
function recoverFromPreorder(traversal) {
227+
const stack = [];
228+
let i = 0;
229+
230+
while (i < traversal.length) {
231+
let depth = 0;
232+
while (i < traversal.length && traversal[i] === '-') {
233+
depth++;
234+
i++;
235+
}
236+
237+
let num = 0;
238+
while (i < traversal.length && !Number.isNaN(+traversal[i])) {
239+
num = num * 10 + +traversal[i];
240+
i++;
241+
}
242+
243+
// Create the new node
244+
const newNode = new TreeNode(num);
245+
246+
while (stack.length > depth) {
247+
stack.pop();
248+
}
249+
250+
if (stack.length > 0) {
251+
const i = stack.length - 1;
252+
if (stack[i].left === null) {
253+
stack[i].left = newNode;
254+
} else {
255+
stack[i].right = newNode;
256+
}
257+
}
258+
259+
stack.push(newNode);
260+
}
261+
262+
return stack.length ? stack[0] : null;
263+
}
264+
```
265+
180266
<!-- tabs:end -->
181267

182268
<!-- solution:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
function recoverFromPreorder(traversal) {
2+
const stack = [];
3+
let i = 0;
4+
5+
while (i < traversal.length) {
6+
let depth = 0;
7+
while (i < traversal.length && traversal[i] === '-') {
8+
depth++;
9+
i++;
10+
}
11+
12+
let num = 0;
13+
while (i < traversal.length && !Number.isNaN(+traversal[i])) {
14+
num = num * 10 + +traversal[i];
15+
i++;
16+
}
17+
18+
// Create the new node
19+
const newNode = new TreeNode(num);
20+
21+
while (stack.length > depth) {
22+
stack.pop();
23+
}
24+
25+
if (stack.length > 0) {
26+
const i = stack.length - 1;
27+
if (stack[i].left === null) {
28+
stack[i].left = newNode;
29+
} else {
30+
stack[i].right = newNode;
31+
}
32+
}
33+
34+
stack.push(newNode);
35+
}
36+
37+
return stack.length ? stack[0] : null;
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
function recoverFromPreorder(traversal: string): TreeNode | null {
2+
const stack: TreeNode[] = [];
3+
let i = 0;
4+
5+
while (i < traversal.length) {
6+
let depth = 0;
7+
while (i < traversal.length && traversal[i] === '-') {
8+
depth++;
9+
i++;
10+
}
11+
12+
let num = 0;
13+
while (i < traversal.length && !Number.isNaN(+traversal[i])) {
14+
num = num * 10 + +traversal[i];
15+
i++;
16+
}
17+
18+
// Create the new node
19+
const newNode = new TreeNode(num);
20+
21+
while (stack.length > depth) {
22+
stack.pop();
23+
}
24+
25+
if (stack.length > 0) {
26+
const i = stack.length - 1;
27+
if (stack[i].left === null) {
28+
stack[i].left = newNode;
29+
} else {
30+
stack[i].right = newNode;
31+
}
32+
}
33+
34+
stack.push(newNode);
35+
}
36+
37+
return stack.length ? stack[0] : null;
38+
}

0 commit comments

Comments
 (0)