先序遍历
void pretrversal(bintree t)
{
if(t)
{
printf("%d",t);
pretraversal(t->left);
pretraversal(t->right);
}
}
中序遍历
void midtrversal(bintree t)
{
if(t)
{
pretraversal(t->left);
printf("%d",t);
pretraversal(t->right);
}
}
后序遍历
void posttrversal(bintree t)
{
if(t)
{
pretraversal(t->left);
pretraversal(t->right);
printf("%d",t);
}
}
中序非递归遍历
void midtrversal(bintree t)
{
bintree b = t;
stack s = createstack(maxsize); //创建新堆栈并初始化
while( b || !isempty(s))
{
while( b )
{
//printf("%d",b->left); //先序遍历
push( s, b); //一直向左并将沿途结点压入堆栈
t = t->left;
}
if( !isempty(s))
{
b = pop(s); //弹出节点
printf("%d",b->data);
b = b->right; //转向右子树
}
}
}
非递归层序遍历
void leveltraversal(bintree t)
{
queue q;
bintree b;
if( !t )
{
return ;
}
q = createqueue(maxsize);
addq(q , t);
while( !isempty(q) )
{
b = deleteq(q);
printf("%d",b->data);
if(b->left)
{
addq(q,b->left);
}
if(b->right)
{
addq(q,b->right);
}
}
}