二叉树的层次遍历
102.二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
来源:力扣(LeetCode)
链接:link
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析:本题使用宽度优先搜索(BFS),对每一层的元素同时进入队列,然后出队时同时出队,再换下一层的同时入队。
C++源码:
/**
* Definition for a binary tree node.
* * struct TreeNode {
* * int val;
* * TreeNode *left;
* * TreeNode *right;
* * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* * };
*/
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root)
{
vector<vector<int>> ans;
if(root == NULL)
return ans;
queue<TreeNode*> q;
TreeNode* p = root;
q.push(root);
while(!q.empty())
{
vector<int> step;
int width = q.size();
for(int i = 0;i < width;i++)//这一层循环用来将之前层的元素出队,将下一层元素入队
{
p = q.front();
step.push_back(p->val);
q.pop();
if(p->left) q.push(p->left);
if(p->right) q.push(p->right);
}
ans.push_back(step);
}
return ans;
}
};智能推荐
二叉树的层次遍历
二叉树的层次遍历 题目描述 : 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ &n...
102.二叉树的层次遍历
难度:中等 题目描述: 思路总结:看到这题,不知是受到什么毒害,首先想到了队列和栈,但发现得用两个分别存当前和子节点,遂放弃,看官方题解,还是两种方法,递归和迭代。 题解一:(递归) 题解一结果: 题解二:(迭代) 题解二结果:...
107.二叉树的层次遍历Ⅱ
难度:简单 题目描述: **思路总结:**首先很直观的想到了,层次遍历,将结果逆序返回。 题解一:(递归) 题解一结果: 题解二:(迭代) 题解二结果: 后记:其实这两题的这两种做法,相对于层次遍历来说也就是,一个逆序操作,只是将逆序操作放到递归和遍历中了,使用的是Python中list的insert方法。...
二叉树的层次遍历
题目 思路 二叉树的层次遍历有两种方法,分别是迭代法和递归法 迭代法 迭代法主要用到队列,将下一层的元素放到队列尾部,从队列首部弹出元素,代码如下 递归法 先用递归求出二叉树的高度 然后再递归的写进容器...
猜你喜欢
人工智能基础-数学方法-形式逻辑
1956 年召开的达特茅斯会议宣告了人工智能的诞生。在人工智能的襁褓期,各位奠基者们,包括约翰·麦卡锡、赫伯特·西蒙、马文·明斯基等未来的图灵奖得主,他们的愿景是让“具备抽象思考能力的程序解释合成的物质如何能够拥有人类的心智”。 通俗地说,理想的人工智能应该具备抽象意义上的学习、推理与归纳能力,其通用性将远远强于解决国际象棋或是围棋...
P3397 地毯——题解2020.10.3
P3397 地毯 思路分析 定义一个二维数组 a[ ][ ]存放每个点覆盖地毯的个数,下标表示每个点的坐标; 设置一个二重循环依次遍历每个地毯覆盖的坐标范围,使地毯覆盖范围内点的值+1; 打印出该二维数组 a[ ][ ]即为本题答案; 注意事项 由题可知:对于20%的数据,有 n≤50,m≤100;对于100%的数据,有 n,m≤1000;所以数组定义为a[1003][1003]...
反射注解案例
1、反射案例: 需求 写一个"框架",不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意方法 实现: 配置文件 反射 步骤: 创建对象 将需要创建的对象的全类名和需要执行的方法定义在配置文件中 在程序中加载读取配置文件 使用反射技术来加载类文件进内存 执行方法 第一步:Person类(创建对象) 第二步:配置文件 pro.properties(将需要创...
lambert与half lambert模型逐顶点和逐片元的漫反射光照
兰伯特模型 逐顶点光照 逐片元光照: 效果对比:左边为逐片元光照。右边为逐顶点光照。右边明暗交界处有较明显的锯齿 半兰伯特光照模型 兰伯特模型的一个问题就是背光面只有一种颜色,缺乏立体感。Half Lambert用于解决这个问题 半兰伯特模型公式: 与兰伯特模型的差别主要在于不同于将背光面光都设为0,它将背光的光也即负值也映射到[0,1]区间。避免了背光的颜色只有0这一种值。需要注意的是,half...
