# 589. N 叉树的前序遍历
# 题目
给定一个 N
叉树,返回其节点值的 前序遍历 。
N
叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null
分隔(请参见示例)。
例
输入:root = [1,null,3,2,4,null,5,6]
输出:[1,3,5,6,2,4]
# 题解
# 递归
/**
* // Definition for a Node.
* function Node(val, children) {
* this.val = val;
* this.children = children;
* };
*/
/**
* @param {Node} root
* @return {number[]}
*/
var preorder = function(root) {
if (!root) return [];
let res = [];
function NPO(node) {
if (!node) return;
res.push(node.val);
for (let c of node.children) {
if (c) NPO(c);
}
}
NPO(root);
return res;
};
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 迭代
/**
* // Definition for a Node.
* function Node(val, children) {
* this.val = val;
* this.children = children;
* };
*/
/**
* @param {Node} root
* @return {number[]}
*/
var preorder = function(root) {
if (!root) return [];
let res = [];
let s = [root];
while (s.length) {
let node = s.pop();
res.push(node.val);
if (node.children)
for (let i = node.children.length - 1; i >= 0; i--) {
let c = node.children[i];
if (c) s.push(c);
}
}
return res;
};
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
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