# 144. 二叉树的前序遍历
# 题目
给定一个二叉树,返回它的前序遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,2,3]
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 题解
# 递归
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var preorderTraversal = function(root) {
let ans = [];
const preOrder = root => {
if (!root) return;
ans.push(root.val);
preOrder(root.left);
preOrder(root.right);
};
preOrder(root);
return ans;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 迭代
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var preorderTraversal = function(root) {
let ans = [];
if (!root) return ans;
let s = [root];
while (s.length) {
let node = s.pop();
ans.push(node.val);
if (node.right) s.push(node.right);
if (node.left) s.push(node.left);
}
return ans;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23