用一个vector<int>来存储每一层的值,使用vector<TreeNode*> node_next来存储下一层的节点。遍历当前节点以提取val的值,并且判断是否有子节点,如果有子节点则将其加入到node_next中,以node_next不断更新当前的node最终提取所有的节点,类似于链表遍历</int>

while(p_node)
{
    p_node=p_node->next;
}

参考代码:

/**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > levelOrder(TreeNode* root) {
        // write code here
        vector<vector<int> > rst;
        if(root == NULL)
            return rst;

        vector<TreeNode*> node_stack;
        node_stack.push_back(root);

        while(node_stack.size())
        {
            vector<int> value;
            vector<TreeNode*> node_next;
            //遍历当前层的节点;
            for(auto& node: node_stack)
            {
                //提取值;
                value.push_back(node->val);
                //如果有左孩子则将左孩子加入到下一层;
                if(node->left)
                    node_next.push_back(node->left);
                //如果有右孩子则将右孩子加入到下一层;
                if(node->right)
                    node_next.push_back(node->right);
            }
            //更新结果;
            rst.push_back(value);

            //更新到下一层;
            node_stack = node_next;
        }
        return rst;
    }
};