341. 扁平化嵌套列表迭代器
知识点考察:
树的深度优先遍历(递归写法)
AC代码:
class NestedIterator {
public:
vector<int> q;
int k;
NestedIterator(vector<NestedInteger> &nestedList) {
k = 0;
for(auto& l : nestedList)
dfs(l);
}
// 树的遍历
void dfs(NestedInteger& l) {
// 如果是叶结点的话,将该叶结点存入数组中
if(l.isInteger())
q.push_back(l.getInteger());
// 如果是内部结点的话,深度优先遍历一次
else {
for(auto& x : l.getList())
dfs(x);
}
}
int next() {
return q[k++];
}
bool hasNext() {
return k < q.size();
}
};