题目
给定一个 N 叉树,返回其节点值的 前序遍历 。
N 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。
进阶:
递归法很简单,你可以使用迭代法完成此题吗?
示例1
输入: root = [1,null,3,2,4,null,5,6]
输出: [1,3,5,6,2,4]
复制代码
解题思路
递归法
深度优先遍历,先遍历根节点,然后递归遍历左子树,再递归遍历右子树
代码
var preorder = function (root) {
let result = []
helper(root)
return result
function helper(node) {
if (!node) return
result.push(node.val)
const len = (node.children || []).length
for (let i = 0; i < len; i++) {
helper(node.children[i])
}
}
}
复制代码
迭代法
将N叉树推入栈中,在栈中依次推入N叉树的N个节点;
动态图
代码
var preorder = function (root) {
if (root === null) return []
let result = []
let stack = [root]
while (stack.length) {
const node = stack.pop()
result.push(node.val)
const len = (node.children || []).length
for (let i = len - 1; i >= 0; i--) {
stack.push(node.children[i])
}
}
return result
}
复制代码