题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
牛客网题目链接
解题思路
与从上到下打印二叉树一样,都是先存在队列里,然后从队列里取出。
只不过这里要区分每一层,因此我们在需要记住每一层有多少个元素,然后在每一层元素数量达到后切换下一层。
代码实现
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