问题描述:

思路简述:

这道题和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实现相关推荐

  1. 二叉树层次遍历c语言_[LeetCode] 107. 二叉树的层次遍历 II

    题目链接 : https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/ 题目描述: 给定一个二叉树,返回其节点值自底 ...

  2. LeetCode 107. 二叉树的层次遍历 II(队列)

    1. 题目 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7],3/ \9 ...

  3. Leetcode 107. 二叉树的层次遍历 II 解题思路及C++实现

    解题思路: 使用队列实现二叉树的层序遍历,因为题目中要求每一层的val存储在一个vector中,所以在内循环中,还需要一个队列,用以存储更新每一层的节点. 在最后,需要将得到的res数组逆序. /** ...

  4. leetcode 107. 二叉树的层次遍历 II(维护两个队列,通过异或运算切换)

    题目 思路 一个比较啰嗦的解法 维护两个queue,当前队列节点的孩子,都放进另外一个队列里去. 树每切换一层,就切换一次队列,并且把新队列的值全部存起来. 整体上来看,是自顶向下遍历,最后翻转整个l ...

  5. 47. Leetcode 107 - 二叉树的层次遍历 ii (二叉树-二叉树遍历)

    给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 . (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例 1:输入:root = [3,9,20,null,null,15, ...

  6. LeetCode 102. 二叉树的层次遍历(BFS)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15, ...

  7. 107. 二叉树的层次遍历 II

    给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3/ \9 20/ ...

  8. 107. 二叉树的层次遍历 II(JavaScript)

    给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3/ \9 20/ ...

  9. Leetcode 107.二叉树的层序遍历 II (每日一题 20210628 同类型题)

    给定一个二叉树,返回其节点值自底向上的层序遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如: 给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \1 ...

  10. 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

最新文章

  1. VS编译时output/Error list窗口自动弹出设置
  2. 从ftp获取文件并生成压缩包
  3. 怎么样给单选按钮前面插入小图标
  4. NYOJ 721 纸牌游戏 简单题
  5. js实现excel块拖拉数据_小程序导出数据到excel表,借助云开发云函数实现excel数据的保存...
  6. 手机html文档,手机文档html能删除吗
  7. 【转】计算机键盘功能键作用
  8. 联想拯救者Y7000P的一些功能键
  9. vuex中辅助函数写法
  10. cousera视频无法加载
  11. 在线书籍阅读,免费搭建站点
  12. 2023.02.11草图大师浴室效果图1skp素材效果图
  13. 转载和积累系列 - 为什么 HashMap 加载因子是0.75?而不是0.8,0.6?
  14. HDFS存储大量小文件居然有这样的问题!看我怎么搞定它!
  15. 【104】ntvdm.exe占内存极大的问题
  16. vue项目中使用地址选择插件v-distpicker,省市区三级联动选择
  17. muduo网络库源码复现笔记(十七):什么都不做的EventLoop
  18. K8s安装遇见问题笔记
  19. Latex Error: Misplaced alignment tab character
  20. 一岁视频号,成绩及格了吗?

热门文章

  1. SIMD与NEON概念理解
  2. Android7.1开机启动脚本
  3. UE4之cmd调用函数
  4. 防火墙审计策略和应用场景介绍(USG6307E)
  5. spring学习--AOP术语
  6. powershell局域网内同步文件夹,文件脚本
  7. 80c51流水灯汇编语言,单片机AT89C51可控流水灯课程设计报告(汇编语言).docx
  8. lnmp编译安装mysql_LNMP编译安装教程
  9. spring freemarker 获取后端的值
  10. php foreach 时间,PHP利用for,while,foreach遍历时间比较的简单示例