二叉树层次遍历c语言_LeetCode 树 107.二叉树的层次遍历Ⅱ
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.二叉树的层次遍历Ⅱ相关推荐
- 二叉树层次遍历c语言_[LeetCode] 107. 二叉树的层次遍历 II
题目链接 : https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/ 题目描述: 给定一个二叉树,返回其节点值自底 ...
- C语言 数据结构 树和二叉树
树 1.树:是n节点的有限集.树是n(n=>0)个节点的有限集. n=0时成为空树. 在任意一颗非空树中:(1)有且仅有一个称为根的节点:(2)当n>0时,其余节点可分为m(m>0) ...
- C语言:树与二叉树的转换
原理:天勤高分笔记P155-P158 树输入的文本形式:AB0CE0F00D000 cstree cstree1:AB0C0D000 cstree2:EF000 cstree3:GH0IJ0000 c ...
- 二叉树 平衡二叉树 红黑树_迅捷树,二叉树
二叉树 平衡二叉树 红黑树 In this tutorial, we'll be discussing the Data Structure Trees and implement it using ...
- 二叉树前序中序后续线索树_二叉树的先序,中序,后序遍历以及线索二叉树的遍历...
二叉树的先序,中序,后序遍历以及线索二叉树的遍历 (2008-05-04 17:52:49) 标签: 杂谈 C++ 二叉树的先序,中序,后序遍历以及线索二叉树的遍历 头文件 //*********** ...
- c语言二叉树图形输出,C语言数据结构树状输出二叉树,谁能给详细的解释一下...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 void TranslevelPrint(Bitree bt) { struct node { Bitree vec[MAXLEN]; //存放树结点 i ...
- 图的遍历c语言数据结构实验报告,数据结构图的遍历实验报告.doc
数据结构图的遍历实验报告.doc 实 验 报 告课程名称 数据结构实验名称 图的遍历姓 名专 业 计算机科学与技术班 级 计算机学 号成绩计算机科学与技术学院实验教学中心2015 年 11 月 20 ...
- 关于二叉树的程序 c语言,请教关于建立二叉树程序(c语言的)
dsd.cpp C:Documents and SettingsAdministrator桌面dsd.cpp(21) : error C2664: 'Init' : cannot convert pa ...
- 树与二叉树之间的相互转换、树的遍历
树与二叉树的转换.树的遍历 树和二叉树不同,可以有0到n个孩子,所以实现起来很麻烦,但我们可以借助树的孩子兄弟表示法把树转换成二叉树. 在孩子兄弟表示法中,某个结点的第一个孩子结点的指针是二叉树中其左 ...
- 树与二叉树的转换、树的遍历
树和二叉树不同,可以有0到n个孩子,所以实现起来很麻烦,但我们可以借助树的孩子兄弟表示法把树转换成二叉树. 在孩子兄弟表示法中,某个结点的第一个孩子结点的指针是二叉树中其左孩子结点指针,右兄弟结点指针 ...
最新文章
- iPhone开发:抢先拥抱软件开发的未来
- java基础面试题:抽象类中是否可以有静态的main方法?
- windows mysql 开启日志功能_Windows下开启mysql日志功能
- Java技巧-解决JAVA_HOME变量无效问题
- .NET 6新特性试用 | Controller支持IAsyncDisposable
- 【C语言进阶深度学习记录】八 C语言中void的分析
- HTML+CSS+JS实现 ❤️高光立体游戏卡片悬停ui特效❤️
- 获取windows所有端口
- 2018级软件秋季总结
- 如何阅读《深入理解计算机系统》这本书?
- 【图像隐写】基于matlab GUI DWT+DCT+PBFO改进图像水印隐藏提取【含Matlab源码 081期】
- Android控件Gallery 3D效果
- 2018年通信工程师中级传输与接入无线专业实务真题
- 数学第一单元计算机思维导图,四年级下册第一单元思维导图数学
- 01.第一章 初等概率论
- qt 元对象 和moc原理
- 七夕情人节教你如何告白~html+css+js制作唯美满天星3D相册(含音乐)程序员520表白必备
- JDK8升至JDK11 新特性整理
- 网页转exe的三种方法
- word标尺灰色_如何在Microsoft Word中使用标尺