Time:O(n) Space:O(n) C++ class Solution { public: int depthSumInverse(vector<NestedInteger>& nestedList) { int ans = 0; int prevSum = 0; queue<NestedInteger> q{{begin(nestedList), end(nestedList)}}; while (!q.empty()) { for (int sz = q.size(); sz > 0; --sz) { const NestedInteger ni = q.front(); q.pop(); if (ni.isInteger()) prevSum += ni.getInteger(); else { for (const NestedInteger nextNi : ni.getList()) q.push(nextNi); } } ans += prevSum; } return ans; } }; JAVA class Solution { public int depthSumInverse(List<NestedInteger> nestedList) { int ans = 0; int prevSum = 0; Queue<NestedInteger> q = new ArrayDeque<>(nestedList); while (!q.isEmpty()) { for (int sz = q.size(); sz > 0; --sz) { final NestedInteger ni = q.poll(); if (ni.isInteger()) prevSum += ni.getInteger(); else q.addAll(ni.getList()); } ans += prevSum; } return ans; } }