题目简介:
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7]
,
返回其层次遍历结果:
1 2 3 4 5
| [ [3], [9,20], [15,7] ]
|
思路:
利用队列,先将根节点入队,然后在每次队列出队的过程中(注意出队的循环条件为出队前的队列大小),若左子树或右子树不为空,则加入到队列中,反复直至队列为空。
tip:
- 每次出队时需要借助
vector<int>
来存放数据,一次出队结束后,再存入vector<vector<int>>
中。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res; queue<TreeNode*> temp; if(root == NULL) return res;
temp.push(root);
while(!temp.empty()){
vector<int> help;
int nowsize = temp.size(); for(int i = 0; i < nowsize; i++){
root = temp.front(); help.push_back(root -> val); temp.pop();
if(root -> left != NULL) temp.push(root -> left); if(root -> right != NULL) temp.push(root -> right); }
res.push_back(help); }
return res; } };
|