题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路
与从上到下打印二叉树一样,都是先存在队列里,然后从队列里取出。
只不过这里要区分每一层,因此我们在需要记住每一层有多少个元素,然后在每一层元素数量达到后切换下一层。
代码实现
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector <vector <int> >res;
vector <int> arr;
if(!pRoot)return res;
TreeNode *tmp;
queue <TreeNode *> node;
node.push(pRoot);
int row=1,curr=0;
while(!node.empty()){
tmp=node.front(),arr.push_back(tmp->val);
row--,node.pop();
if(tmp->left)node.push(tmp->left),curr++;
if(tmp->right)node.push(tmp->right),curr++;
if(!row)res.push_back(arr),row=curr,curr=0,arr.clear();//切换下一层
}
return res;
}
};
运行时间:2ms
占用内存:376k