首页 热点资讯 义务教育 高等教育 出国留学 考研考公

求一个二叉树遍历的C语言程序,改程序包含6个算法。

发布网友 发布时间:2024-08-20 01:08

我来回答

2个回答

热心网友 时间:2024-08-24 02:57

void xianxu(Bitree T)
{
if(T)
{
printf("%c",T->Data);
xianxu(T->left);
xianxu(T->right);
}
}
void zhongxu(Bitree T)
{
if(T)
{
zhongxu(T->left);
printf("%c",T->Data);
zhongxu(T->right);
}
}
void houxu(Bitree T)
{
if(T)
{
houxu(T->left);
houxu(T->right);
printf("%c",T->Data);
}
}

 
void  StackInit(SqStack t){
t.top=0;
}
int StackEmpty(SqStack s){
if(s.top==0)
return 1;
else
return 0;
}

void  visite(int s)
{
printf("%d ",s);
}
void push( SqStack s, Bitree p){
s.top++;
s.Elem[s.top]=p;
}
Bitree pop(SqStack s){
Bitree p=s.Elem[s.top];
     s.top--;
 return p;
}
void PreOrderUnrec(Bitree t)
{
    SqStack s;
    StackInit(s);
    Bitree p=t;
    while (p!=NULL || !StackEmpty(s))
    {
        while (p!=NULL)             //遍历左子树
        {
            visite(p->Data);
            push(s,p);
            p=p->left;       
        }//endwhile
         
        if (!StackEmpty(s))         //通过下一次循环中的内嵌while实现右子树遍历
        {
            p=pop(s);
            p=p->right;        
        }//endif
     }//endwhile 
}//PreOrderUnrec
//2.中序遍历非递归算法
void InOrderUnrec(Bitree t)
{
    SqStack s;
    StackInit(s);
    Bitree p=t;
    while (p!=NULL || !StackEmpty(s))
    {
        while (p!=NULL)             //遍历左子树
        {
            push(s,p);
            p=p->left;
        }//endwhile
        if (!StackEmpty(s))
        {
            p=pop(s);
            visite(p->Data);        //访问根结点
            p=p->right;            //通过下一次循环实现右子树遍历
        }//endif   
    }//endwhile
}

你百度一下很多的。。。。。

热心网友 时间:2024-08-24 02:59

函数带1的就是先序遍历

2~中序遍历

3~后续遍历



声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com