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

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型vector<vector<>>
     */
    void func(int level, TreeNode* node, vector<vector<int> >& out_data)
    {
        if(!node)return;
        if(out_data.size() == level)
        {
            out_data.resize(level+1);
        }
        out_data[level].push_back(node->val);
        if(node->left)
        {
            func(level + 1, node->left, out_data);
        }
        if(node->right)
        {
            func(level + 1, node->right, out_data);
        }
    }
    vector<vector<int> > levelOrder(TreeNode* root)
    {
        vector<vector<int> > vecData;
        func(0, root, vecData);
        return vecData;
    }
};