-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path94.二叉树的中序遍历.ts
49 lines (47 loc) · 1.14 KB
/
94.二叉树的中序遍历.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
* @lc app=leetcode.cn id=94 lang=typescript
*
* [94] 二叉树的中序遍历
*/
// @lc code=start
/**
* Definition for a binary tree node.
* class TreeNode {
* val: number
* left: TreeNode | null
* right: TreeNode | null
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
* }
*/
function inorderTraversal(root: TreeNode | null): number[] {
const traversal: number[] = [];
const inOrder = (root: TreeNode | null) => {
if (root) {
inOrder(root.left);
traversal.push(root.val);
inOrder(root.right);
}
};
inOrder(root);
return traversal;
}
// @lc code=end
// 迭代
function inorderTraversal2(root: TreeNode | null): number[] {
const traversal: number[] = [];
const stack: TreeNode[] = [];
while (root || stack.length) {
while (root) {
stack.push(root);
root = root.left;
}
root = stack.pop()!;
traversal.push(root.val);
root = root.right;
}
return traversal;
}