56.把二叉树打印成多行
来源:互联网 发布:登录新熊片数据库 编辑:程序博客网 时间:2024/06/11 03:39
把二叉树打印成多行
- 参与人数:1574时间限制:1秒空间限制:32768K
- 算法知识视频讲解
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
这道题可以在55题的基础上把level判断去掉,就可以了。
class Solution {public: vector<vector<int> > Print(TreeNode* pRoot) { vector< vector<int> > retVec;if (pRoot == NULL) return retVec;vector<TreeNode*> cur;vector<TreeNode*> next;cur.push_back(pRoot);while (!cur.empty() || !next.empty()) {vector<int> tmp;for (int i = 0; i < cur.size(); i++) {tmp.push_back(cur[i]->val);TreeNode* nodeTmp = cur[i];if (nodeTmp->left)next.push_back(nodeTmp->left);if (nodeTmp->right)next.push_back(nodeTmp->right);}retVec.push_back(tmp);cur.clear();cur = next;next.clear();}return retVec; } };
第二次做:
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int>> retVec ; if ( pRoot == NULL ) return retVec ; vector<TreeNode*> curVec ; vector<TreeNode*> nextVec ; curVec.push_back( pRoot ) ; while ( curVec.empty() == false ) { vector<int> tmp ; for ( vector<TreeNode*>::iterator it = curVec.begin(); it != curVec.end(); ++ it ) { tmp.push_back( (*it)->val ) ; if ( (*it)->left ) { nextVec.push_back( (*it)->left ) ; } if ( (*it)->right ) { nextVec.push_back( (*it)->right ) ; } } retVec.push_back( tmp ) ; curVec.clear() ; curVec = nextVec ; nextVec.clear() ; } return retVec ; } };
第三次做:
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int>> retVec ; if ( pRoot == NULL ) return retVec ; vector<TreeNode*> curVec ; vector<TreeNode*> nextVec ; curVec.push_back( pRoot ) ; while ( curVec.empty() == false ) { vector<int> tmp ; for ( vector<TreeNode*>::iterator iter = curVec.begin(); iter != curVec.end(); ++iter ) { tmp.push_back( (*iter)->val ) ; if ( (*iter)->left ) nextVec.push_back( (*iter)->left ) ; if ( (*iter)->right ) nextVec.push_back( (*iter)->right ) ; } retVec.push_back( tmp ) ; curVec.clear() ; curVec = nextVec ; nextVec.clear() ; } return retVec ; } };
0 0
- 56.把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- Spark疑问4之Idea中project中的module如何将File路径设置为当前module路径而不是project路径?
- Android 选择日期时间对话框(可选择开始结束时间,已解决弹出键盘问题)
- CSS position属性和实例应用
- Java集合相关面试问题和答案
- Java并发编程:线程池的使用
- 56.把二叉树打印成多行
- 五款用于 Linux 编程的内存调试器
- JVM性能监控工具(一)-jdk命令行工具
- UVA - 11059 Maximum Product
- 键盘样式(UIKeyboardType)
- 计算机程序的构造和解释 练习 1.11
- CSS中position的absolute如何相对于父元素的位置进行定位
- 单例
- jquery效果-淡入与淡出效果