5(107) 二叉树的层次遍历Ⅱ

描述

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

示例

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

    3/ 9  20/  15   7

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

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

Description

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

Example

Given binary tree [3,9,20,null,null,15,7]

    3/ 9  20/  15   7

return its bottom-up level order traversal as:

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

BitDance Amazon Microsoft Adobe Apple Google Alibaba HuaWei Mi DiDi

解题

此题目是4.102.二叉树的层次遍历的一种变形 即 层次遍历后输出的数组是逆序的 因此只是在102题目的代码中修改了输出数组的顺序 很多题解都是在102题目的基础上在最后输出数组的时候使用了reverse(res.begin(),res.end())调换了数组内元素的顺序 但本人的代码是使用了stack<vector<int>>来接收每次层序遍历输出的数组元素 然后再使用一次while循环将stack栈顶的元素添加到二维数组res中

#include <iostream>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int x):val(x),left(NULL),right(NULL) {}
};
TreeNode* levelCreateBinaryTree(const vector<int> &nums,int len,int index){//层序创建二叉树index为位置序号TreeNode *root=NULL;if(index<len&&nums[index]!=-1){root = new TreeNode(nums[index]);root->left = levelCreateBinaryTree(nums,len,2*index+1);root->right= levelCreateBinaryTree(nums,len,2*index+2);}return root;
}
void PrintMartrix(vector<vector<int>>& res){//打印二维数组for(int i=0;i<res.size();++i){cout<<"[";for(int j=0;j<res[i].size();++j){cout<<" "<<res[i][j]<<" ";}cout<<"]"<<endl;}
}
class Solution {public:vector<vector<int>> levelOrderBottom(TreeNode* root) {vector<vector<int>> res;stack<vector<int>> st;if(!root) return res;queue<TreeNode* > Tree;Tree.push(root);while(!Tree.empty()){vector<int> temp;int len=Tree.size();while(len--){TreeNode *pNode=Tree.front();Tree.pop();temp.push_back(pNode->val);if(pNode->left) Tree.push(pNode->left);if(pNode->right) Tree.push(pNode->right);}st.push(temp);}while(!st.empty()){res.push_back(st.top());st.pop();}return res;}
};
int main(){vector<int> nums={0,1,2,3,4,5,6,7,8};//示例 -1代表所在位置为空值int len=nums.size();TreeNode *root=levelCreateBinaryTree(nums,len,0);Solution answer;vector<vector<int>> res=answer.levelOrderBottom(root);PrintMartrix(res);return 0;
}

二叉树层次遍历c语言_LeetCode 树 107.二叉树的层次遍历Ⅱ相关推荐

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

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

  2. C语言 数据结构 树和二叉树

    树 1.树:是n节点的有限集.树是n(n=>0)个节点的有限集. n=0时成为空树. 在任意一颗非空树中:(1)有且仅有一个称为根的节点:(2)当n>0时,其余节点可分为m(m>0) ...

  3. C语言:树与二叉树的转换

    原理:天勤高分笔记P155-P158 树输入的文本形式:AB0CE0F00D000 cstree cstree1:AB0C0D000 cstree2:EF000 cstree3:GH0IJ0000 c ...

  4. 二叉树 平衡二叉树 红黑树_迅捷树,二叉树

    二叉树 平衡二叉树 红黑树 In this tutorial, we'll be discussing the Data Structure Trees and implement it using ...

  5. 二叉树前序中序后续线索树_二叉树的先序,中序,后序遍历以及线索二叉树的遍历...

    二叉树的先序,中序,后序遍历以及线索二叉树的遍历 (2008-05-04 17:52:49) 标签: 杂谈 C++ 二叉树的先序,中序,后序遍历以及线索二叉树的遍历 头文件 //*********** ...

  6. c语言二叉树图形输出,C语言数据结构树状输出二叉树,谁能给详细的解释一下...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 void TranslevelPrint(Bitree bt) { struct node { Bitree vec[MAXLEN]; //存放树结点 i ...

  7. 图的遍历c语言数据结构实验报告,数据结构图的遍历实验报告.doc

    数据结构图的遍历实验报告.doc 实 验 报 告课程名称 数据结构实验名称 图的遍历姓 名专 业 计算机科学与技术班 级 计算机学 号成绩计算机科学与技术学院实验教学中心2015 年 11 月 20 ...

  8. 关于二叉树的程序 c语言,请教关于建立二叉树程序(c语言的)

    dsd.cpp C:Documents and SettingsAdministrator桌面dsd.cpp(21) : error C2664: 'Init' : cannot convert pa ...

  9. 树与二叉树之间的相互转换、树的遍历

    树与二叉树的转换.树的遍历 树和二叉树不同,可以有0到n个孩子,所以实现起来很麻烦,但我们可以借助树的孩子兄弟表示法把树转换成二叉树. 在孩子兄弟表示法中,某个结点的第一个孩子结点的指针是二叉树中其左 ...

  10. 树与二叉树的转换、树的遍历

    树和二叉树不同,可以有0到n个孩子,所以实现起来很麻烦,但我们可以借助树的孩子兄弟表示法把树转换成二叉树. 在孩子兄弟表示法中,某个结点的第一个孩子结点的指针是二叉树中其左孩子结点指针,右兄弟结点指针 ...

最新文章

  1. iPhone开发:抢先拥抱软件开发的未来
  2. java基础面试题:抽象类中是否可以有静态的main方法?
  3. windows mysql 开启日志功能_Windows下开启mysql日志功能
  4. Java技巧-解决JAVA_HOME变量无效问题
  5. .NET 6新特性试用 | Controller支持IAsyncDisposable
  6. 【C语言进阶深度学习记录】八 C语言中void的分析
  7. HTML+CSS+JS实现 ❤️高光立体游戏卡片悬停ui特效❤️
  8. 获取windows所有端口
  9. 2018级软件秋季总结
  10. 如何阅读《深入理解计算机系统》这本书?
  11. 【图像隐写】基于matlab GUI DWT+DCT+PBFO改进图像水印隐藏提取【含Matlab源码 081期】
  12. Android控件Gallery 3D效果
  13. 2018年通信工程师中级传输与接入无线专业实务真题
  14. 数学第一单元计算机思维导图,四年级下册第一单元思维导图数学
  15. 01.第一章 初等概率论
  16. qt 元对象 和moc原理
  17. 七夕情人节教你如何告白~html+css+js制作唯美满天星3D相册(含音乐)程序员520表白必备
  18. JDK8升至JDK11 新特性整理
  19. 网页转exe的三种方法
  20. word标尺灰色_如何在Microsoft Word中使用标尺

热门文章

  1. 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理
  2. MkDocs安装、生成文档、风格配置、插件安装
  3. python内置类型
  4. Linux bash介绍
  5. EMNLP 2017 北京论文报告会笔记
  6. 先知平台算法原理简介
  7. css position relative absolute fixed
  8. 记一次Alluxio HA master启动失败
  9. Django 框架之 URL
  10. S3C6410和S5PV210的启动模式介绍