层序遍历10题
empty__barrel
这个作者很懒,什么都没留下…
展开
-
力扣:111.二叉树的最小深度
力扣:111.二叉树的最小深度代码随想录解析题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。思路:最小深度:从上到下从左到右依次遍历遇到的第一个没有孩子节点的一行。从上到下依次每行遍历,记录行数,当出现某一行某一节点的孩子为空,那么直接返回行数。代码:class Solution {public: int minDepth(TreeNode* root) { queue<Tr原创 2022-02-24 17:11:32 · 220 阅读 · 0 评论 -
力扣:104.二叉树的最大深度
力扣:104.二叉树的最大深度代码随想录解析题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。思路:按层序遍历,同时记录层数。代码:class Solution {public: int maxDepth(TreeNode* root) { queue<TreeNode*>que; if(root!=nullptr) que.push(root);原创 2022-02-24 16:56:28 · 87 阅读 · 0 评论 -
力扣:117.填充每个节点的下一个右侧节点指针II
力扣:117.填充每个节点的下一个右侧节点指针II代码随想录题目:给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。思路:这一题的代码①与上一题的②代码完全一样。当前行的最后一个前面的节点都有next,所以当 i < si原创 2022-02-24 16:46:42 · 5793 阅读 · 0 评论 -
力扣:116.填充每个节点的下一个右侧节点指针
力扣:116.填充每个节点的下一个右侧节点指针代码随想录解析题目:给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。①思路:对当前行取出的元素进行链接。原创 2022-02-24 15:48:53 · 114 阅读 · 0 评论 -
力扣:515.在每个树行中找最大值
力扣:515.在每个树行中找最大值代码随想录题目:给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。思路:正常按层序遍历,for中内容,是从第一层一直到最后一层,首相将第一个元素值赋给标志量,然后后面这一行要删除的元素的值都与这个标志量进行比较,后面的值大则交换。代码:class Solution {public: vector<int> largestValues(TreeNode* root) { queue<TreeNode*原创 2022-02-24 15:23:02 · 79 阅读 · 0 评论 -
力扣:429.N叉树的层序遍历
力扣:429.N叉树的层序遍历代码随想录解析题目:给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。思路:这个题目也是按层序遍历,只是一个节点可能有多个孩子,节点孩子的形式不再是left,right 而是 vector 来储存所有孩子。依旧是之前按层序遍历的方式,只不过在添加下一行的时候,是添加 当前节点的vector 里面的元素。代码:class Solution {public: ve原创 2022-02-24 15:04:39 · 5305 阅读 · 0 评论 -
力扣:637.二叉树的层平均值
力扣:637.二叉树的层平均值代码随想录解析题目:给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。思路:按层序遍历,用sum记录每一层的加和值,每一层结束取平均值放入 vector 中。代码:class Solution {public: vector<double> averageOfLevels(TreeNode* root) { queue<TreeNode*>原创 2022-02-24 14:29:51 · 98 阅读 · 0 评论 -
力扣:199.二叉树的右视图
力扣:199.二叉树的右视图代码随想录解析题目:给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。思路:按层序遍历,当要出队列的元素是每一行的最后一个元素时,元素值入 vector 中。代码:class Solution {public: vector<int> rightSideView(TreeNode* root) { queue<TreeNode*>que; i原创 2022-02-24 14:18:10 · 214 阅读 · 0 评论 -
力扣:107.二叉树的层次遍历 II
力扣:107.二叉树的层次遍历 II代码随想录解析题目:给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)思路:按层序遍历然后翻转 vector 容器即可。代码:class Solution {public: vector<vector<int>> levelOrderBottom(TreeNode* root) { queue<TreeNode*>que原创 2022-02-24 14:09:09 · 77 阅读 · 0 评论 -
力扣:102.二叉树的层序遍历
力扣:102.二叉树的层序遍历代码随想录解析题目:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。思路:入每一行的节点,然后首先出一行的头结点同时将其元素值放入vector中,同时入其左孩子右孩子,就这样依次出依次入,到最后上一行全部出去,下一行全部进来。先进先出所以选择队列。返回的结果:容器中每一个元素代表的都是一行的元素值。所以每一次的操作都是操作一行,将一行的数值全部放入vector中然后再将此vector放入总vector中。代码:c原创 2022-02-24 13:58:44 · 610 阅读 · 0 评论