给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

例如:
给定二叉树 [3,9,20,null,null,15,7],

返回其自底向上的层次遍历为:

[
[15,7],
[9,20],
[3]
]

这里我们使用一个二维的动态数组来存放遍历后的值,用队列来实现树的遍历。
先把根节点放入队列中,然后出队,遍历根节点的值,放入动态数组的第一个位置;
再将根节点的左右子树的根节点入队,然后再依次出队,并遍历其值插入动态数组的第一个位置;
其余的各子树都依次按上述操作进行;
最后返回值即为层次遍历的结果。

代码实现如下:

/*** 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>> res;//结果if(root==NULL) return res;queue<TreeNode*> q;//定义一个队列,用来放树的结点指针q.push(root);//先把整棵树的根节点放进去while(!q.empty()){vector<int> temp;//临时变量int len = q.size();//队列的长度(队列中树的个数)for(int i=0;i<len;i++){TreeNode* now = q.front();//获取队列的第一个q.pop();//队列弹出temp.push_back(now->val);//临时变量保存第一颗树的根节点if(now->left!=NULL) //左子树非空q.push(now->left);if(now->right!=NULL)//右子树非空 q.push(now->right);}res.insert(res.begin(), temp);//将临时变量保存到结果中(从前面插入)}return res;}
};

二叉树层次遍历(自下而上)相关推荐

  1. [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS | BFS)

    目录: 1.Binary Tree Level Order Traversal - 二叉树层次遍历 BFS 2.Binary Tree Level Order Traversal II - 二叉树层次 ...

  2. 数据结构-二叉树层次遍历

    首先介绍下二叉树的层次遍历即按照顺序对树节点依次访问,如下图: 顺序遍历的结果为:ABCDEFGHIJK 我们可以借助一个队列来实现二叉树的层次遍历:思路如下: 先将二叉树根节点入队,然后出队,访问该 ...

  3. 二叉树层次遍历--广度遍历和深度遍历

    问题来源:二叉树层次遍历 问题描述:给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例子: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 ...

  4. 由序列确定二叉树:前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 代码实现(c语言)

    下面三种序列可以唯一的构造唯一的一棵二叉树: 前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 #include<stdio.h> #inc ...

  5. 树(二叉树层次遍历输出及二叉树前序遍历输入)

    前两篇解释了二叉树的有关逻辑概念及前中后序输出递归代码的实现,这篇将讲述二叉树层次遍历输出如何实现以及二叉树前序遍历输入的两种情况. 定义结构体 struct BiNode{char data;BiN ...

  6. 二叉树层次遍历:队列

    二叉树层次遍历 二叉树层次遍历的基本算法在本文中不提及.本文内容为,在二叉树层次遍历中,为何选用队列这样一种数据结构. 不使用额外数据结构 首先,假设我们不使用额外的数据结构,只使用 1 个指针: 访 ...

  7. (数据结构)二叉树层次遍历

    二叉树层次遍历 二叉树层次遍历的实现思想是:通过队列数据结构,从树的根结点开始,依次将其左孩子和右孩子入队:而后每次队列中一个结点出队,都将其左孩子和右孩子入队,直到树中所有结点都出队,出队结点的先后 ...

  8. 二叉树的层次遍历_【腾讯面试热身题】二叉树层次遍历(动画展示)

    二叉树的层次遍历同时涉及到树和队列两种数据结构的操作,因此大厂很喜欢用来作为面试的热身题.作者不少去腾讯的小伙伴,都反映,这种题一定要非常熟练,不然会被直接pass. 1 题目描述 给定一个二叉树,按 ...

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

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

  10. 二叉树层次遍历python_根据二叉树层序遍历顺序(数组),将其转换为二叉树(Python)...

    1.创建二叉树结点和值 class Node: def __init__(self, value): self.value = value self.left = None self.right = ...

最新文章

  1. Mysql导出函数、存储过程
  2. 数据库事务转载基础二:MySQL事务隔离级别详解
  3. Java左上到右下,java – 如何从上到下然后从左到右填充Gri...
  4. ios 代码设置控件宽高比_ios-自动布局以保持视图大小比例
  5. JavaScript 表单专题
  6. ApacheCN 未来发展方向(暂定)2019.8.2
  7. react-native 第三方库
  8. 编译Sqoop2错误解决
  9. 北大毕业 15 年经验架构师,重磅解读 5G 时代的计算平台
  10. C#数组和集合专题2(Array)
  11. Unity2D开发小细节
  12. xss漏洞java代码_Java处理XSS漏洞的工具类代码
  13. JavaWeb框架-Spring(基本概念)
  14. 测试ai模糊软件,“马赛克视频”还原软件被疯传!实际测试后,效果差距太大!...
  15. 付款方对接银联入网仿真测试系统
  16. 我看大学培训机构--大学生到底要不要参加培训机构 一个参加培训的大学生的真实感受
  17. 挑战华为社招:java工程师都要掌握哪些技术
  18. 面试连环炮:从HashSet开始,一路怼到CPU
  19. python中一个等于号和两个等于号_python中is与双等于号“==”的区别示例详解
  20. JSP实用教程——第二章JSP语法

热门文章

  1. Unix/Linux系统中的inode总结
  2. 用C语言程序进行比赛日程排列
  3. kubernetes Auditing 实战
  4. Java课程学习四:编程题
  5. 小人物吃金币_android小游戏(1)
  6. 如何使用Pandas进行数据分析!最详细的数据分析教程!
  7. Unity3D场景制作基本操作
  8. html 显示 %3c,HTML没有显示已解码的%3C?(HTML does not show decoded %3C?)
  9. spring boot 启动
  10. Web 应用防火墙:Modsecurity 和核心规则集