书上给了使用迭代实现二叉树前序遍历的代码,提升一下自己,去LeetCode找个N叉树的!
题目
589. N 叉树的前序遍历
难度 简单
给定一个 N 叉树,返回其节点值的 前序遍历 。
N 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null
分隔(请参见示例)。
进阶:
递归法很简单,你可以使用迭代法完成此题吗?
示例 1:
输入:root = [1,null,3,2,4,null,5,6]
输出:[1,3,5,6,2,4]
题解
/*
class node {
val: number;
children: node[];
constructor(val?: number) {
this.val = val === undefined ? 0 : val;
this.children = [];
}
}
*/
function preorder(root: node | null): number[] {
const stack = [root];
const ret = [];
while (stack.length > 0) {
const p = stack.pop();
if (p?.children) {
ret.push(p.val);
stack.concat(p.children.reverse());
}
}
return ret;
}
解题思路:
从根节点开始,每次拿出该节点下的所有子节点推入栈里(为了出栈时能拿到最左侧的,逆序一下),继续迭代栈里的内容。
吐槽一下原版LeetCode上的interface是用的Node,这个是JavaScript里的Keyword,不是很know why do?
题目链接: