《剑指offer》按之字形顺序打印二叉树
2015-09-13 23:10
519 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?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;
int cnt = 0;
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);
}
if(cnt%2)
reverse(path.begin(),path.end());
cnt++;
ans.push_back(path);
path.clear();
while(!tmp.empty())
{
Q.push(tmp.front());
tmp.pop();
}
}
return ans;
}
};
相关文章推荐
- js动态函数
- css
- javaScript基础系列2
- ExtJS在传统模式、MVC模式下的使用区别
- 《剑指offer》把二叉树打印成多行
- 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 网页计算器案例