/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > ret;
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
if (root) {
vector<int> retVec = {root->val};
ret.emplace_back(retVec);
vector<const TreeNode *> rootVec = {root};
deepOrder(rootVec);
}
return ret;
}
void deepOrder(const vector<const TreeNode *> &nodes) {
vector<int> retVec;
vector<const TreeNode *> nextVec;
for (auto &node : nodes) {
if (node->left) {
retVec.emplace_back(node->left->val);
nextVec.emplace_back(node->left);
}
if (node->right) {
retVec.emplace_back(node->right->val);
nextVec.emplace_back(node->right);
}
}
if (!retVec.empty()) {
ret.emplace_back(retVec);
deepOrder(nextVec);
}
}
};