赞
踩
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7]
,
- 3
- / \
- 9 20
- / \
- 15 7
返回其层序遍历结果:
- [
- [3],
- [9,20],
- [15,7]
- ]
C++中的队列queue
基本用法:(这部分转载自https://blog.csdn.net/lady_killer9/article/details/79261798)
queue 和 stack 有一些成员函数相似,但在一些情况下,工作方式有些不同:
bfs,AC
- class Solution
- {
- public:
- vector<vector<int>> levelOrder(TreeNode *root)
- {
- vector<vector<int>> ans;
- vector<int> curr;
- if (root == nullptr)
- {
- return ans;
- }
- queue<TreeNode *> q;
- q.push(root);
- int cnt = 1;
- while (!q.empty())
- {
- int cnt_new = 0;
- for (int i = 0; i < cnt; i++)
- {
- TreeNode *temp = q.front();
- curr.push_back(temp->val);
- q.pop();
- if (temp->left != nullptr)
- {
- q.push(temp->left);
- cnt_new++;
- }
- if (temp->right != nullptr)
- {
- q.push(temp->right);
- cnt_new++;
- }
- }
- ans.push_back(curr);
- curr.clear();
- cnt = cnt_new;
- }
- return ans;
- }
- };

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。