您的位置:首页 > Web前端

剑指offer-按之字形顺序打印二叉树

2017-08-25 12:32 363 查看
题目:

实现一个函数按照之字形顺序打印二叉树。

按之字形顺序打印二叉树需要两个栈。我们在打印某一行结点时,吧下一层的子结点保存在相应的栈里。如果当前打印的是奇数层(第一,三),则先保存左子结点再保存右子结点的第一个栈里;如果当前打的是偶数层(二,四),则先保存右子结点再保存左子结点到第二个栈里。

struct BinaryTree
{
int data;
BinaryTree *left;
BinaryTree *right;
};

void print(BinaryTree *pRoot)
{
if(pRoot==NULL)
return;
stack <BinaryTree *>level[2];

int cur=0;
int next=1;

level[cur].push(pRoot);
while(!level[0].empty()||!level[1].empty())
{
BinaryTree *pNode=level[cur].top();
level[cur].pop();
cout<<pNode->data;
if(cur==0)
{
if(pNode->left!=NULL)
level[next].push(pNode->left);
if(pNode->right!=NULL)
level[next].push(pNode->right);
}
else
{
if(pNode->right!=NULL)
level[next].push(pNode->right);
if(pNode->left!=NULL)
level[next].push(pNode->left);
}
if(level[cur].empty())
{
cout<<endl;
cur=1-cur;
next=1-next;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: