DFS,遍历该结构体元素,遇到数组就进入更深一层递归,遇到数字就push_back。
class NestedIterator {
public:
vector<int> res;
int cnt = 0; //cnt表示当前元素的指针
NestedIterator(vector<NestedInteger> &nestedList) {
dfs(nestedList);
}
void dfs(vector<NestedInteger> &nestedList)
{
for (auto t : nestedList)
if (t.isInteger()) res.push_back(t.getInteger()); //是整数就直接push
else dfs(t.getList()); //是数组就把数组拿出来继续递归
}
int next() {
return res[cnt ++ ]; //不断指向下一个元素
}
bool hasNext() {
return cnt < res.size(); //判断当前指针位置是否超出边界
}
};