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 4596847

Browse files
Merge pull request youngyangyang04#1058 from xiaofei-2020/tree2
添加(二叉树的递归遍历.md):增加typescript版本
2 parents 0be65ec + d40a15e commit 4596847

File tree

2 files changed

+99
-34
lines changed

2 files changed

+99
-34
lines changed

‎problems/二叉树的迭代遍历.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,61 @@ var postorderTraversal = function(root, res = []) {
454454
};
455455
```
456456

457+
TypeScript:
458+
459+
```typescript
460+
// 前序遍历(迭代法)
461+
function preorderTraversal(root: TreeNode | null): number[] {
462+
if (root === null) return [];
463+
let res: number[] = [];
464+
let helperStack: TreeNode[] = [];
465+
let curNode: TreeNode = root;
466+
helperStack.push(curNode);
467+
while (helperStack.length > 0) {
468+
curNode = helperStack.pop()!;
469+
res.push(curNode.val);
470+
if (curNode.right !== null) helperStack.push(curNode.right);
471+
if (curNode.left !== null) helperStack.push(curNode.left);
472+
}
473+
return res;
474+
};
475+
476+
// 中序遍历(迭代法)
477+
function inorderTraversal(root: TreeNode | null): number[] {
478+
let helperStack: TreeNode[] = [];
479+
let res: number[] = [];
480+
if (root === null) return res;
481+
let curNode: TreeNode | null = root;
482+
while (curNode !== null || helperStack.length > 0) {
483+
if (curNode !== null) {
484+
helperStack.push(curNode);
485+
curNode = curNode.left;
486+
} else {
487+
curNode = helperStack.pop()!;
488+
res.push(curNode.val);
489+
curNode = curNode.right;
490+
}
491+
}
492+
return res;
493+
};
494+
495+
// 后序遍历(迭代法)
496+
function postorderTraversal(root: TreeNode | null): number[] {
497+
let helperStack: TreeNode[] = [];
498+
let res: number[] = [];
499+
let curNode: TreeNode;
500+
if (root === null) return res;
501+
helperStack.push(root);
502+
while (helperStack.length > 0) {
503+
curNode = helperStack.pop()!;
504+
res.push(curNode.val);
505+
if (curNode.left !== null) helperStack.push(curNode.left);
506+
if (curNode.right !== null) helperStack.push(curNode.right);
507+
}
508+
return res.reverse();
509+
};
510+
```
511+
457512
Swift:
458513

459514
> 迭代法前序遍历

‎problems/二叉树的递归遍历.md

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -270,40 +270,6 @@ func postorderTraversal(root *TreeNode) (res []int) {
270270
}
271271
```
272272

273-
javaScript:
274-
275-
```js
276-
277-
前序遍历:
278-
279-
var preorderTraversal = function(root, res = []) {
280-
if (!root) return res;
281-
res.push(root.val);
282-
preorderTraversal(root.left, res)
283-
preorderTraversal(root.right, res)
284-
return res;
285-
};
286-
287-
中序遍历:
288-
289-
var inorderTraversal = function(root, res = []) {
290-
if (!root) return res;
291-
inorderTraversal(root.left, res);
292-
res.push(root.val);
293-
inorderTraversal(root.right, res);
294-
return res;
295-
};
296-
297-
后序遍历:
298-
299-
var postorderTraversal = function(root, res = []) {
300-
if (!root) return res;
301-
postorderTraversal(root.left, res);
302-
postorderTraversal(root.right, res);
303-
res.push(root.val);
304-
return res;
305-
};
306-
```
307273
Javascript版本:
308274

309275
前序遍历:
@@ -358,7 +324,51 @@ var postorderTraversal = function(root) {
358324
};
359325
```
360326

327+
TypeScript:
328+
329+
```typescript
330+
// 前序遍历
331+
function preorderTraversal(node: TreeNode | null): number[] {
332+
function traverse(node: TreeNode | null, res: number[]): void {
333+
if (node === null) return;
334+
res.push(node.val);
335+
traverse(node.left, res);
336+
traverse(node.right, res);
337+
}
338+
const res: number[] = [];
339+
traverse(node, res);
340+
return res;
341+
}
342+
343+
// 中序遍历
344+
function inorderTraversal(node: TreeNode | null): number[] {
345+
function traverse(node: TreeNode | null, res: number[]): void {
346+
if (node === null) return;
347+
traverse(node.left, res);
348+
res.push(node.val);
349+
traverse(node.right, res);
350+
}
351+
const res: number[] = [];
352+
traverse(node, res);
353+
return res;
354+
}
355+
356+
// 后序遍历
357+
function postorderTraversal(node: TreeNode | null): number[] {
358+
function traverse(node: TreeNode | null, res: number[]): void {
359+
if (node === null) return;
360+
traverse(node.left, res);
361+
traverse(node.right, res);
362+
res.push(node.val);
363+
}
364+
const res: number[] = [];
365+
traverse(node, res);
366+
return res;
367+
}
368+
```
369+
361370
C:
371+
362372
```c
363373
//前序遍历:
364374
void preOrderTraversal(struct TreeNode* root, int* ret, int* returnSize) {

0 commit comments

Comments
(0)

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