LeetCode-107二叉树的层次遍历 II-BFS实现
问题描述:
思路简述:
这道题和102二叉树的层序遍历思路基本相同,多了一个步骤就是对最后的ans二维数组反转一下。这道题考点主要就是二叉树的BFS层序遍历法,实现核心就是维护一个nextLevel队列与一个thisLevel数组,nextLevel队列存储的永远是二叉树下一层的元素,所以循环的条件就应该是判断nextLevel是否为空,若不为空则层次遍历未结束。thisLevel是一个int数组,存储的nextLevel队列中pop出来的首元素的val值,同时将该元素的左右节点压入nextLevel队列末,这样一次循环结束后,thisLevel所存储的即是nextLevel之前保存的所有元素,而nextLevel保存的是更新以后的新的下一层节点们,每次循环结束时要把thisLevel的int数组压入ans二维数组中。这样,当所有层次循环结束,ans所存储的就是包含各个层次节点值的二维数组。
代码实现:
/*** 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>> levelOrderBottom(TreeNode* root){vector<vector<int>> ans;if (root == NULL) return ans;queue<TreeNode *> nextLevel;nextLevel.push(root);while (nextLevel.size() != 0) {vector<int> thisLevel;int nextLevelLen = nextLevel.size();for (int i = 0; i < nextLevelLen; i++) {thisLevel.push_back(nextLevel.front()->val);if (nextLevel.front()->left != NULL) nextLevel.push(nextLevel.front()->left);if (nextLevel.front()->right != NULL) nextLevel.push(nextLevel.front()->right);nextLevel.pop();}ans.push_back(thisLevel);thisLevel.clear();}reverse(ans.begin(), ans.end());return ans;}
};
LeetCode-107二叉树的层次遍历 II-BFS实现相关推荐
- 二叉树层次遍历c语言_[LeetCode] 107. 二叉树的层次遍历 II
题目链接 : https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/ 题目描述: 给定一个二叉树,返回其节点值自底 ...
- LeetCode 107. 二叉树的层次遍历 II(队列)
1. 题目 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7],3/ \9 ...
- Leetcode 107. 二叉树的层次遍历 II 解题思路及C++实现
解题思路: 使用队列实现二叉树的层序遍历,因为题目中要求每一层的val存储在一个vector中,所以在内循环中,还需要一个队列,用以存储更新每一层的节点. 在最后,需要将得到的res数组逆序. /** ...
- leetcode 107. 二叉树的层次遍历 II(维护两个队列,通过异或运算切换)
题目 思路 一个比较啰嗦的解法 维护两个queue,当前队列节点的孩子,都放进另外一个队列里去. 树每切换一层,就切换一次队列,并且把新队列的值全部存起来. 整体上来看,是自顶向下遍历,最后翻转整个l ...
- 47. Leetcode 107 - 二叉树的层次遍历 ii (二叉树-二叉树遍历)
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 . (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例 1:输入:root = [3,9,20,null,null,15, ...
- LeetCode 102. 二叉树的层次遍历(BFS)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15, ...
- 107. 二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3/ \9 20/ ...
- 107. 二叉树的层次遍历 II(JavaScript)
给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3/ \9 20/ ...
- Leetcode 107.二叉树的层序遍历 II (每日一题 20210628 同类型题)
给定一个二叉树,返回其节点值自底向上的层序遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如: 给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \1 ...
- 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II
❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...
最新文章
- VS编译时output/Error list窗口自动弹出设置
- 从ftp获取文件并生成压缩包
- 怎么样给单选按钮前面插入小图标
- NYOJ 721 纸牌游戏 简单题
- js实现excel块拖拉数据_小程序导出数据到excel表,借助云开发云函数实现excel数据的保存...
- 手机html文档,手机文档html能删除吗
- 【转】计算机键盘功能键作用
- 联想拯救者Y7000P的一些功能键
- vuex中辅助函数写法
- cousera视频无法加载
- 在线书籍阅读,免费搭建站点
- 2023.02.11草图大师浴室效果图1skp素材效果图
- 转载和积累系列 - 为什么 HashMap 加载因子是0.75?而不是0.8,0.6?
- HDFS存储大量小文件居然有这样的问题!看我怎么搞定它!
- 【104】ntvdm.exe占内存极大的问题
- vue项目中使用地址选择插件v-distpicker,省市区三级联动选择
- muduo网络库源码复现笔记(十七):什么都不做的EventLoop
- K8s安装遇见问题笔记
- Latex Error: Misplaced alignment tab character
- 一岁视频号,成绩及格了吗?
热门文章
- SIMD与NEON概念理解
- Android7.1开机启动脚本
- UE4之cmd调用函数
- 防火墙审计策略和应用场景介绍(USG6307E)
- spring学习--AOP术语
- powershell局域网内同步文件夹,文件脚本
- 80c51流水灯汇编语言,单片机AT89C51可控流水灯课程设计报告(汇编语言).docx
- lnmp编译安装mysql_LNMP编译安装教程
- spring freemarker 获取后端的值
- php foreach 时间,PHP利用for,while,foreach遍历时间比较的简单示例