LintCode-二叉树的层次遍历 II
2015-06-25 19:18
323 查看
给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)
您在真实的面试中是否遇到过这个题?
Yes
样例
给出一棵二叉树
按照从下往上的层次遍历为:
标签 Expand
分析:就是层次遍历呀。。。
代码:
您在真实的面试中是否遇到过这个题?
Yes
样例
给出一棵二叉树
{3,9,20,#,#,15,7},
3 / \ 9 20 / \ 15 7
按照从下往上的层次遍历为:
[ [15,7], [9,20], [3] ]
标签 Expand
分析:就是层次遍历呀。。。
代码:
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { /** * @param root : The root of binary tree. * @return : buttom-up level order a list of lists of integer */ public: vector<vector<int>> levelOrderBottom(TreeNode *root) { // write your code here vector<vector<TreeNode*> > ret; if(root==nullptr) return vector<vector<int> >(); vector<TreeNode*> cur; cur.push_back(root); ret.push_back(cur); while(true) { vector<TreeNode*> newCur; vector<TreeNode*> cur = ret.back(); for(auto x:cur) { if(x->left) newCur.push_back(x->left); if(x->right) newCur.push_back(x->right); } if(newCur.size()>0) ret.push_back(newCur); else break; } reverse(ret.begin(),ret.end()); vector<vector<int> > values; for(auto v:ret) { vector<int> vals; for(auto t:v) vals.push_back(t->val); values.push_back(vals); } return values; } };
相关文章推荐
- C++ Primer快速学习 第一章 入门之二:输入与输出 (IO)
- enable_irq_wake
- C#读取文件路径
- TangIDE开发技巧之GridView控件布局
- [ShortCut] IE10快捷键
- Weakself的一种写法(转)
- java byte 与 int float转换
- Oracle:杀死死锁进程
- HTML 常用标签
- 简单的一个php验证登陆代码
- 51单片机 学习之旅[3] 中断-定时器
- C++ Primer学习6:const指针 和 指针与const限定符区别
- 数据结构和算法系列 - 跳跃表 SkipList
- CreateCompatibleDC工作原理
- 典型场景
- iOS网络篇---使用NSConnection 实现post和get发送和接收(同步和异步模式)
- java对象与json对象间的相互转换
- 对其它组的评价
- MySQL详解(5)-----------函数超全总结
- 部队->运维->分享->讲师历程