递归思想,用一个队列维护每一次递归的树节点,每打印一个值的同时就把他的左孩子和右孩子(如果不是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;
}
};


京公网安备 11010502036488号