LeetCode(107) Binary Tree Level Order Traversal II
2024-09-24 14:15:35
题目
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).
For example:
Given binary tree {3,9,20,#,#,15,7},
return its bottom-up level order traversal as:
分析
与LeetCode(103) Binary Tree Zigzag Level Order Traversal 以及 LeetCode(102) Binary Tree Level Order Traversal 本质相同的题目,只不过灵活调整结果返回格式罢了。
AC代码
/**
* 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) {
//层次遍历,分层存储
if (!root)
return vector<vector<int> >();
vector<vector<int> > ret;
//定义两个队列,一个存储所有的父节点,另一个存储他们的子节点也就是子层
queue<TreeNode *> parents;
parents.push(root);
while (!parents.empty())
{
//存储当前层的遍历结果
vector<int> tmp;
//定义队列存储他们的子节点也就是子层
queue<TreeNode *> childs;
while (!parents.empty())
{
TreeNode *node = parents.front();
tmp.push_back(node->val);
//弹出当前父节点
parents.pop();
if (node->left)
childs.push(node->left);
if (node->right)
childs.push(node->right);
}
//存储当前层的遍历结果
ret.push_back(tmp);
//遍历下一层
parents = childs;
}
//反转遍历结果 由下向上存储
reverse(ret.begin(), ret.end());
return ret;
}
};
最新文章
- alpha值的问题
- xml文件格式说明
- 二进制求最大公约数&;&;输出二进制
- js checkbox获取选中的值
- Last-Modified、ETag、Expires和Cache-Control
- SSH由WAS/Tomcat/Weblogic迁移到JBOSS
- PHP soap Web Service 使用SoapDiscovery.class.php 生成wsdl文件
- Android 5.0 开发者官方网站疏理知识结构
- FineUI表格模板列Undefined问题
- Java 8 Learn Notes
- 从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray)
- dfs+剪枝:poj2362
- 【转】《高级前端3.6》JavaScript多线程——Concurrent.Thread.js, WebWork
- 手把手的SpringBoot教程,SpringBoot创建web项目(五)
- day06 Request Response
- Java核心技术卷一基础知识-第2章-Java程序设计环境-读书笔记
- Android应用内嵌unity3d游戏项目
- 【ftp】主动模式和被动模式
- thinkphp 3.2.1 URL 大小写问题 下面有具体说明
- 简单使用Vuex步骤及注意事项
热门文章
- [软件工程基础]PhyLab 技术规格说明书
- [hdu1686] Oulipo【KMP】
- KEIL MDK之RTX的移植
- Unity Shader入门精要学习笔记 - 第11章 让画面动起来
- php中socket的使用(重点参考)
- 实战:mysql写存储过程并定时调用
- Java虚拟机(JVM),JDK,JRE和JVM的区别——通过示例学习Java编程(2)
- AJPFX简述i=i+1与i+=1及x++的区别和效率
- hihocoder1766 字符串问题
- AngularJs数据绑定原理