【60】把二叉树打印成多行
来源:互联网 发布:linux运行级别介绍 编辑:程序博客网 时间:2024/05/17 09:36
【60】把二叉树打印成多行
- 参与人数:2502
- 时间限制:1秒
- 空间限制:32768K
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
牛客网题目链接:点击这里
VS2010代码:
// Source: http://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&tqId=11213&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking// Author: Yang Qiang// Date : 2016-8-13#include<iostream>#include<vector>#include<queue>using namespace std;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> > result; if(!pRoot) return result; queue<TreeNode*> a1; vector<int> temp; a1.push(pRoot); temp.push_back(pRoot->val); result.push_back(temp); temp.clear(); int thisLine=1; int nextLine=0; while(/*!a1.empty() && */thisLine!=0) //两个条件等价 取一个即可 { for(int i=0; i!=thisLine; i++) { if(a1.front()->left) { a1.push(a1.front()->left); temp.push_back(a1.front()->left->val); nextLine++; } if(a1.front()->right) { a1.push(a1.front()->right); temp.push_back(a1.front()->right->val); //一开始发生段错误, nextLine++; //因为把其中一个写成了left } a1.pop(); } thisLine=nextLine; nextLine=0; if(!temp.empty()) result.push_back(temp); temp.clear(); } return result; } };
牛客网通过图片:
0 0
- 【60】把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- scrollView ——自动轮播并且设置图片底部小圆点
- Android ANR问题
- Android中 "WebView"的使用
- codeforces 703C
- 拦截器在struts2中的应用
- 【60】把二叉树打印成多行
- 侧滑菜单HorizontalScrollView,类中如何使用intent跳转
- OkHttp
- ZooKeeper的原生API
- nginx负载均衡配置
- jzoj 2549. 【NOIP2011模拟9.4】家庭作业
- Uva 725 Division(暴力)
- 【OK6410裸机程序】移植printf和scanf
- QTabWidget setTabButton Example