面试题60:把二叉树打印成多行
2016-07-28 20:19
260 查看
题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
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<int> vect;
vector<vector<int> > v;
if(pRoot == NULL)
return v;
queue<TreeNode *> queueNode;
queueNode.push(pRoot);
TreeNode *temp = NULL;
int nextNum = 0;
int toBePrint = 1;
while(!queueNode.empty())
{
temp = queueNode.front();
if(temp->left)
{
queueNode.push(temp->left);
nextNum++;
}
if(temp->right)
{
queueNode.push(temp->right);
nextNum++;
}
vect.push_back(temp->val);
queueNode.pop();
toBePrint--;
if(toBePrint == 0)
{
v.push_back(vect);
vect.resize(0);
toBePrint = nextNum;
nextNum = 0;
}
}
return v;
}
};
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<int> vect;
vector<vector<int> > v;
if(pRoot == NULL)
return v;
queue<TreeNode *> queueNode;
queueNode.push(pRoot);
TreeNode *temp = NULL;
int nextNum = 0;
int toBePrint = 1;
while(!queueNode.empty())
{
temp = queueNode.front();
if(temp->left)
{
queueNode.push(temp->left);
nextNum++;
}
if(temp->right)
{
queueNode.push(temp->right);
nextNum++;
}
vect.push_back(temp->val);
queueNode.pop();
toBePrint--;
if(toBePrint == 0)
{
v.push_back(vect);
vect.resize(0);
toBePrint = nextNum;
nextNum = 0;
}
}
return v;
}
};
相关文章推荐
- 面试题59:对称的二叉树
- 机器学习面试问题3
- 一些忠告给想转行当程序员的你
- Android 面试题大全
- 一些忠告给想转行当程序员的你
- 面试题: 面向切面编程(AOP)的理解
- 面试题之java的理解
- 一线公司面试题宝典
- 关于一个分表面试题
- JAVA面试题相关基础知识
- 13张IT职业技能&学习图谱
- php面试题目
- 面试题58:二叉树的下一个节点
- 面试总结(malloc、虚继承、assert)
- 那些程序员们后知后觉的职涯经验
- 机器学习面试问题2
- Java常用排序算法/程序员必须掌握的8大排序算法
- 面试题57:删除链表中的重复节点
- Java基础面试题之Singleton模式
- Java Web 初级程序员 : 第二天学习内容