https://smart888.taobao.com/ 立观智能监控
分类: C/C++
2009-03-10 22:32:21
typedef struct bitnode//树形结构
{
int data;
struct bitnode *lchild,*rchild;
}bitnode,*bitree;
int preordertraverse(bitree t)//前序遍历
{
if(t)
{
cout<<t->data<<" ";
preordertraverse(t->lchild);//遍历左子树
preordertraverse(t->rchild);//遍历右子树
}
return 1;
}
int inordertraverse(bitree t)//中序遍历
{
if(t)
{
inordertraverse(t->lchild);//遍历左子树
cout<<t->data<<" ";
inordertraverse(t->rchild);//遍历右子树
}
return 1;
}
int postordertraverse(bitree t)//后序遍历
{
if(t)
{
postordertraverse(t->lchild);//遍历左子树
postordertraverse(t->rchild);//遍历右子树
cout<<t->data<<" ";
}
return 1;
}
int inordertraverse2(bitree t)//中序遍历二叉树,非递归
{
sqstack s;
bitree p;
initstack(s);
p=t;
while(p||s.top!=s.base)
{
if(p)//往左走到尽头
{
push(s,p);
p=p->lchild;
}
else
{
pop(s,p);//当前结点出队
cout<<p->data<<" ";
p=p->rchild;//右孩子入队
}
}
return 1;
}