LintCode 70 二叉树的层次遍历 II
来源:互联网 发布:淘宝卖家群聊 编辑:程序博客网 时间:2024/06/06 19:11
题目:levelOrderBottom
要求:
给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)
样例:
给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7按照从下往上的层次遍历为:[ [15,7], [9,20], [3]]
算法要求:
无
解题思路:
直接倒着输出即可。
算法如下:
int getSize(TreeNode *root) { if (root == NULL) { return 1; } return getSize(root->left) + getSize(root->right); } vector<vector<int> > levelOrderBottom(TreeNode *root) { // write your code here vector<vector<int> > vec; if (root == NULL) { return vec; } int size = getSize(root) - 1; queue<TreeNode*> que; que.push(root); vector<int> *v = new vector<int>(); int n = 1; int i = 0; int j = 0; while (!que.empty() && j < size) { TreeNode *now = que.front(); que.pop(); i++; if (now) { v->push_back(now->val); j++; } if (i >= n) { i = 0; n *= 2; if (!v->empty()) { vec.push_back(*v); v = new vector<int>(); } } if (now) { que.push(now->left); que.push(now->right); } else{ que.push(NULL); que.push(NULL); } } if (!v->empty()) { vec.push_back(*v); } vector<vector<int> > vec2; size = vec.size(); for (int i = 0; i < size; i++) { vec2.push_back(vec[size - i - 1]); } return vec2; }
0 0
- LintCode-二叉树的层次遍历 II
- LintCode 二叉树的层次遍历 II
- LintCode:二叉树的层次遍历 II
- 二叉树的层次遍历 II,lintcode
- 二叉树的层次遍历 II -LintCode
- Lintcode 二叉树的层次遍历 II
- lintcode-二叉树的层次遍历 II
- lintcode-二叉树的层次遍历II-70
- LintCode 70 二叉树的层次遍历 II
- [Lintcode] #70 二叉树的层次遍历 II
- [Lintcode]Binary Tree Level Order Traversal II 二叉树的层次遍历 II
- LintCode 二叉树的层次遍历
- lintcode-二叉树的层次遍历-69
- LintCode:二叉树的层次遍历
- LintCode:二叉树的锯齿形层次遍历
- LintCode 二叉树的锯齿形层次遍历
- Lintcode(M) 二叉树的层次遍历
- 二叉树的锯齿形层次遍历,lintcode
- 左耳朵耗子:拖累开发团队效率的困局与解决之道
- 如何招聘高技能的IT人才
- 如何在CMD下运用管理员权限
- android双缓冲绘图技术分析
- 删除cell时 报错 Assertion failure in -[UITableView _endCellAnimationsWithContext:]
- LintCode 70 二叉树的层次遍历 II
- Android——ServiceGPS轨迹记录
- iOS打包后收不到推送信息
- Hibernate hql 定义,from 子句
- HTML5中FormData对象的使用
- Mongo数据库操作
- <meta>标签的作用
- 存储过程 VS 触发器
- 嵌入式c程序易错点(转自http://blog.csdn.net/zhzht19861011/article/details/45508029)