按之字形顺序打印二叉树
2016-08-13 09:20
246 查看
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。/*
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> > vec;
if(pRoot==NULL) return vec;
stack<TreeNode *> stack1,stack2;
stack1.push(pRoot);
while(!stack1.empty()||!stack2.empty())
{
vector<int> data;
TreeNode* pNode=NULL;
if(!stack1.empty())
{
while(!stack1.empty())
{
pNode=stack1.top();
data.push_back(pNode->val);
stack1.pop();
if(pNode->left!=NULL)
stack2.push(pNode->left);
if(pNode->right!=NULL)
stack2.push(pNode->right);
}
}
else if(!stack2.empty())
{
while(!stack2.empty())
{
pNode=stack2.top();
data.push_back(pNode->val);
stack2.pop();
if(pNode->right!=NULL)
stack1.push(pNode->right);
if(pNode->left!=NULL)
stack1.push(pNode->left);
}
}
vec.push_back(data);
}
return vec;
}
};
相关文章推荐
- 面试题61:按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
- 剑指offer-面试题61-按之字形顺序打印二叉树
- 面试题61:按之字形顺序打印二叉树
- Q61:按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树java实现
- 按之字形顺序打印二叉树
- 【剑指offer-解题系列(60)】按之字形顺序打印二叉树
- 《剑指Offer》学习笔记--面试题61:按之字形顺序打印二叉树
- 【剑指offer】按之字形顺序打印二叉树
- 剑指Offer_59_按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树