mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 11:34:46 +08:00
Merge pull request #1058 from xiaofei-2020/tree2
添加(二叉树的递归遍历.md):增加typescript版本
This commit is contained in:
@ -454,6 +454,61 @@ var postorderTraversal = function(root, res = []) {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
TypeScript:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// 前序遍历(迭代法)
|
||||||
|
function preorderTraversal(root: TreeNode | null): number[] {
|
||||||
|
if (root === null) return [];
|
||||||
|
let res: number[] = [];
|
||||||
|
let helperStack: TreeNode[] = [];
|
||||||
|
let curNode: TreeNode = root;
|
||||||
|
helperStack.push(curNode);
|
||||||
|
while (helperStack.length > 0) {
|
||||||
|
curNode = helperStack.pop()!;
|
||||||
|
res.push(curNode.val);
|
||||||
|
if (curNode.right !== null) helperStack.push(curNode.right);
|
||||||
|
if (curNode.left !== null) helperStack.push(curNode.left);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 中序遍历(迭代法)
|
||||||
|
function inorderTraversal(root: TreeNode | null): number[] {
|
||||||
|
let helperStack: TreeNode[] = [];
|
||||||
|
let res: number[] = [];
|
||||||
|
if (root === null) return res;
|
||||||
|
let curNode: TreeNode | null = root;
|
||||||
|
while (curNode !== null || helperStack.length > 0) {
|
||||||
|
if (curNode !== null) {
|
||||||
|
helperStack.push(curNode);
|
||||||
|
curNode = curNode.left;
|
||||||
|
} else {
|
||||||
|
curNode = helperStack.pop()!;
|
||||||
|
res.push(curNode.val);
|
||||||
|
curNode = curNode.right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 后序遍历(迭代法)
|
||||||
|
function postorderTraversal(root: TreeNode | null): number[] {
|
||||||
|
let helperStack: TreeNode[] = [];
|
||||||
|
let res: number[] = [];
|
||||||
|
let curNode: TreeNode;
|
||||||
|
if (root === null) return res;
|
||||||
|
helperStack.push(root);
|
||||||
|
while (helperStack.length > 0) {
|
||||||
|
curNode = helperStack.pop()!;
|
||||||
|
res.push(curNode.val);
|
||||||
|
if (curNode.left !== null) helperStack.push(curNode.left);
|
||||||
|
if (curNode.right !== null) helperStack.push(curNode.right);
|
||||||
|
}
|
||||||
|
return res.reverse();
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
Swift:
|
Swift:
|
||||||
|
|
||||||
> 迭代法前序遍历
|
> 迭代法前序遍历
|
||||||
|
@ -270,40 +270,6 @@ func postorderTraversal(root *TreeNode) (res []int) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
javaScript:
|
|
||||||
|
|
||||||
```js
|
|
||||||
|
|
||||||
前序遍历:
|
|
||||||
|
|
||||||
var preorderTraversal = function(root, res = []) {
|
|
||||||
if (!root) return res;
|
|
||||||
res.push(root.val);
|
|
||||||
preorderTraversal(root.left, res)
|
|
||||||
preorderTraversal(root.right, res)
|
|
||||||
return res;
|
|
||||||
};
|
|
||||||
|
|
||||||
中序遍历:
|
|
||||||
|
|
||||||
var inorderTraversal = function(root, res = []) {
|
|
||||||
if (!root) return res;
|
|
||||||
inorderTraversal(root.left, res);
|
|
||||||
res.push(root.val);
|
|
||||||
inorderTraversal(root.right, res);
|
|
||||||
return res;
|
|
||||||
};
|
|
||||||
|
|
||||||
后序遍历:
|
|
||||||
|
|
||||||
var postorderTraversal = function(root, res = []) {
|
|
||||||
if (!root) return res;
|
|
||||||
postorderTraversal(root.left, res);
|
|
||||||
postorderTraversal(root.right, res);
|
|
||||||
res.push(root.val);
|
|
||||||
return res;
|
|
||||||
};
|
|
||||||
```
|
|
||||||
Javascript版本:
|
Javascript版本:
|
||||||
|
|
||||||
前序遍历:
|
前序遍历:
|
||||||
@ -358,7 +324,51 @@ var postorderTraversal = function(root) {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
TypeScript:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// 前序遍历
|
||||||
|
function preorderTraversal(node: TreeNode | null): number[] {
|
||||||
|
function traverse(node: TreeNode | null, res: number[]): void {
|
||||||
|
if (node === null) return;
|
||||||
|
res.push(node.val);
|
||||||
|
traverse(node.left, res);
|
||||||
|
traverse(node.right, res);
|
||||||
|
}
|
||||||
|
const res: number[] = [];
|
||||||
|
traverse(node, res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 中序遍历
|
||||||
|
function inorderTraversal(node: TreeNode | null): number[] {
|
||||||
|
function traverse(node: TreeNode | null, res: number[]): void {
|
||||||
|
if (node === null) return;
|
||||||
|
traverse(node.left, res);
|
||||||
|
res.push(node.val);
|
||||||
|
traverse(node.right, res);
|
||||||
|
}
|
||||||
|
const res: number[] = [];
|
||||||
|
traverse(node, res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 后序遍历
|
||||||
|
function postorderTraversal(node: TreeNode | null): number[] {
|
||||||
|
function traverse(node: TreeNode | null, res: number[]): void {
|
||||||
|
if (node === null) return;
|
||||||
|
traverse(node.left, res);
|
||||||
|
traverse(node.right, res);
|
||||||
|
res.push(node.val);
|
||||||
|
}
|
||||||
|
const res: number[] = [];
|
||||||
|
traverse(node, res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
C:
|
C:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
//前序遍历:
|
//前序遍历:
|
||||||
void preOrderTraversal(struct TreeNode* root, int* ret, int* returnSize) {
|
void preOrderTraversal(struct TreeNode* root, int* ret, int* returnSize) {
|
||||||
|
Reference in New Issue
Block a user