直接输出层序遍历倒不是什么难事儿,但是如何分层呢? --思路是保证一次性处理完一层结点,只要加一个for循环就好了
上一次for加入了多少个节点,就意味着下一层有多少个结点,那么下一次for循环就得出去多少个节点。
vector<vector<int>> levelOrder(TreeNode* root)
{
vector<vector<int>> res;
if(root==NULL)return res;
queue<TreeNode*> que;
TreeNode *p=root;
que.push(p);
while(!que.empty())
{
int n=que.size();
vector<int> temp;
for(int i=0;i<n;i++)//保证每次处理完整一层
{
p=que.front();
que.pop();
if(p){//按道理在这里不判断也行,但是leetcode会通过不了
temp.push_back(p->val);
if(p->left) que.push(p->left);
if(p->right) que.push(p->right);
}
}
res.push_back(temp);
}
return res;
}