接上题,实现比较简单的先序和中序
void PreOrder(BTree root)
{
stack<BTreeNode> S;
BTree p=root;
S.push(root);
while(p&&!S.empty())
{
while(p)
{
visit(p->data);
S.push(p);
p=p->lchild;
}
if(!S.empty())
{
p=S.pop();
p=p->rchild;
}
}
}
void PostOrder(BTree root)
{
stack<BTreeNode> S;
BTree p = root;
S.push(root);
while(p&&!S.empty())
{
while(p)
{
S.push(p);
p=p->lchild;
}
if(!S.empty())
{
p=S.pop();
visit(p->data);
p=p->rchild;
}
}
}