《剑指offer》把二叉树打印成多行
2015-09-13 23:04
330 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:http://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路
考虑到这是一个宽度优先搜索的问题,要求同一层的结点在数组中也在同一行,所以我们每次遍历玩一层的结点的时候,我们还需要保存期路径,这就需要两个队列来完成。
/*
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> > ans;
vector<int> path;
if(pRoot==nullptr)
return ans;
queue<TreeNode*> Q,tmp;
Q.push(pRoot);
while(!Q.empty())
{
while(!Q.empty())
{
TreeNode *pNode = Q.front();
path.push_back(pNode->val);
Q.pop();
if(pNode->left)
tmp.push(pNode->left);
if(pNode->right)
tmp.push(pNode->right);
}
ans.push_back(path);
path.clear();
while(!tmp.empty())
{
Q.push(tmp.front());
tmp.pop();
}
}
return ans;
}
};
相关文章推荐
- JSON的简单使用
- javaScript概述
- 基于开源库jsoncpp的json字符串解析
- [LeetCode][JavaScript]Binary Tree Preorder Traversal
- 配置JSDoc的默认模板
- 《剑指offer》对称的二叉树
- js用addeventlistener绑定事件,阻止默认事件。
- HTML&CSS Learning Notes 2 (Additional)
- 《剑指offer》二叉树的下一个结点
- JSdom操作内容,样式,属性
- CSS
- 【学习笔记】JavaScript中,构造函数、原型对象和实例的关系
- jQuery EasyUI API 中文文档
- html5学习之路_007
- 09-13 网页计算器案例
- XML解析之DOM解析引入GDataXMLNode的方法
- PorterDuff及Xfermode详解
- JavaScript的垃圾回收机制
- 《剑指offer》删除链表中重复的结点
- JavaScript的垃圾回收机制