递归思想,用一个队列维护每一次递归的树节点,每打印一个值的同时就把他的左孩子和右孩子(如果不是nllptr
的话)添加到队列里。为了保证层次性,每循环一层之前都要获得队列的size()
。
/** * 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) { vector<vector<int> > ans; if(!root) return ans; queue<TreeNode*> que; que.push(root); while(!que.empty()) { int len = que.size(); vector<int> vec; while(len--) { TreeNode* temp = que.front(); vec.push_back(temp->val); que.pop(); if(temp->left) que.push(temp->left); if(temp->right) que.push(temp->right); } ans.push_back(vec); } return ans; } };