/** * 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); } } };