您的位置:首页 > 其它

按之字形顺序打印二叉树

2016-07-01 17:15 393 查看
//请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,
//第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

#include "iostream"
#include "stack"

using namespace std;

struct treeNode
{
treeNode* left;
treeNode* right;
int value;
};

void printZigzag(treeNode* pRoot)
{
if (pRoot == NULL)
return;

stack<treeNode*> levels[2];

int current = 0;

levels[current].push(pRoot);

treeNode* p;
while (!levels[current].empty())
{
while (!levels[current].empty())
{
p = levels[current].top();
levels[current].pop();

cout << p->value << '\t';

if (current == 0)
{
if (p->left != NULL)
levels[1].push(p->left);
if (p->right != NULL)
levels[1].push(p->right);
}
else
{
if (p->left != NULL)
levels[0].push(p->left);
if (p->right != NULL)
levels[0].push(p->right);
}
}
cout << endl;
current = !current;
}
}
用两个栈,数组存放两个栈,0、1下标交换当前栈,这个思想很棒!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: