vector<vector<int> > levelOrderBottom(TreeNode *root) {
     vector<vector<int> > answer;
     if (root == NULL)
     {
         return answer;
     }
     queue<traverseNode> tmpQueue;
     traverseQueue.swap(tmpQueue);
     traverseQueue.push(traverseNode(root, 1));
     while(!traverseQueue.empty())
     {
         traverseNode topNode = traverseQueue.front();
         if (topNode.level > answer.size())
         {
             vector<int> emptyVector;
             answer.push_back(emptyVector);
         }
         answer[topNode.level - 1].push_back(topNode.node->val);
         traverseQueue.pop();
         if (topNode.node -> left != NULL)
         {
             traverseQueue.push(traverseNode(topNode.node->left, topNode.level + 1));
         }
         if (topNode.node -> right != NULL)
         {
             traverseQueue.push(traverseNode(topNode.node->right, topNode.level + 1));
         }
     }
     for (int i = 0; i < (answer.size()/2); i++)
     {
         answer[i].swap(answer[answer.size() - i - 1]);
     }
     return answer;
 }
    void pop()
    {
        if (q1.empty()) throw runtime_error("bad operation");

        while (q1.size() != 1) {
            q2.push(q1.front());
            q1.pop();
        }

        q1.pop();
        q1.swap(q2); // swap element back
    }
Beispiel #3
0
inline void swap( queue<T, Container> &left, queue<T, Container> &right ) 
    noexcept( noexcept( left.swap( right ) ) )
{
    left.swap( right );
}