NC15 求二叉树的层序遍历
NC15 求二叉树的层序遍历
1.题目描述:
3.设计思想:
就像题目描述所说,从左到右,一层一层的遍历,即BFS遍历。
首先我们定义一个队列,然后将根节点入队,当队列不为空的时候,需要进行以下两个操作:1)求出当前队列的长度大小len 。
2)取出队列前len个节点,每取出一个节点,就把对应节点的左右孩子入队(前提孩子不为空),然后重复这一过程直到队列为空后输出结果。
详细操作流程看下图
4.代码:
c++版本:
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
vector<vector<int> >res;//用于返回最后的结果
if(root == NULL) return res;//如果根节点为空就返回结果
queue<TreeNode *>q;//用于存储每一层的节点
q.push(root);
while(!q.empty()){
vector<int>temp;//用于存储当前遍历这一层的节点
int n = q.size();
for(int i = 0;i < n;i ++){
TreeNode *node = q.front();//取出队列的第一个元素
q.pop();
temp.push_back(node->val);//将队头元素保存起来
if(node->left != NULL) q.push(node->left);//左孩子如果不为空就进队列
if(node->ri
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
前端岗位面试真题宝典 文章被收录于专栏
本面试宝典均来自校招面试题目大数据进行的整理
科大讯飞公司氛围 477人发布