341. 扁平化嵌套列表迭代器
- 其实就是一个多叉树遍历,没什么特别的
- 和扁平化化数组没有什么区别
- 只不过
root.isInteger()
代表到达叶子结点
root.getList()
代表 root.children
var NestedIterator = function(nestedList) {
var result = [];
// 遍历以 root 为根的多叉树,将叶子节点的值加入 result 列表
var traverse = function(root) {
if (root.isInteger()) {
// 到达叶子节点
result.push(root.getInteger());
return;
}
// 遍历框架
for (var child of root.getList()) {
traverse(child);
}
}
for (var node of nestedList) {
// 以每个节点为根遍历
traverse(node);
}
this.index = 0;
this.result = result;
};
NestedIterator.prototype.hasNext = function() {
return this.index < this.result.length;
};
NestedIterator.prototype.next = function() {
return this.result[this.index++];
};