/** * // This is the interface that allows for creating nested lists. * // You should not implement it, or speculate about its implementation * public interface NestedInteger { * * // @return true if this NestedInteger holds a single integer, rather than a nested list. * public boolean isInteger(); * * // @return the single integer that this NestedInteger holds, if it holds a single integer * // Return null if this NestedInteger holds a nested list * public Integer getInteger(); * * // @return the nested list that this NestedInteger holds, if it holds a nested list * // Return empty list if this NestedInteger holds a single integer * public List<NestedInteger> getList(); * } */ publicclassNestedIteratorimplementsIterator<Integer> {
classNode { NestedInteger nestedInteger; int index;
List<NestedInteger> list = current.nestedInteger.getList(); if (current.index < list.size()) { NestedIntegertemp= list.get(current.index); pushNode(temp); } else { stack.pop(); stack.peek().index++; } }
returnfalse; }
privatevoidpushNode(NestedInteger nestedInteger) { intindex=0; if (nestedInteger.isInteger()) { index = -1; }
stack.push(newNode(nestedInteger, index)); } }
/** * Your NestedIterator object will be instantiated and called as such: * NestedIterator i = new NestedIterator(nestedList); * while (i.hasNext()) v[f()] = i.next(); */