Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3a82e38

Browse files
authored
feat: add solutions to lc problem: No.1028 (doocs#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‎

Lines changed: 86 additions & 0 deletions
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‎

Lines changed: 86 additions & 0 deletions
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 -->
Lines changed: 38 additions & 0 deletions
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+
}
Lines changed: 38 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /