大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > 算法技巧 > 二叉树基本操作的程序实现

二叉树基本操作的程序实现(3)

关键词:二叉树C语言  阅读(3102) 赞(31)

[摘要]本文是二叉树基本操作的程序实现,与大家分享。

#include"Bintree.h"
 
/**********************************************/
/*                  求一棵树的高度            */
/**********************************************/
 
int Depth(Bintree t)
{
    int  lh , rh ;
    if( NULL == t )
    {
        return 0 ;
    }
    else
    {
        lh = Depth( t->lchild ) ;
        rh = Depth( t->rchild ) ;
        return ( lh > rh ? lh : rh ) + 1 ;
    }
}
 
int main()
{
    Bintree t ;
    Creat_Bintree( &t ) ;
    printf( "树的高度是%d\n" , Depth( t ) ) ;
    return 0 ;
}
 
 
 
#include"Bintree.h"
/*******************************************************/
/*      已知一课棵二叉树的中序和后序,建立这棵树       */
/*******************************************************/
 
void In_Pos_order(Bintree *t,char *s,char *r)
{
    char La[30],Lb[30],Ra[30],Rb[30];
    int i,len,length=strlen(r);
    if(length>0&&r[length-1]!='\0')
    {
        *t=(Binnode *)malloc(sizeof(Binnode));
        (*t)->data=r[length-1];
        for(i=0;s[i]!=r[length-1];i++)
        {
            Ra[i]=s[i];
            La[i]=r[i];
        }
        len=i;
        Ra[len]='\0'; //左中
        La[len]='\0'; //左后
        for(i=len+1;i<strlen(s);i++)
        {
            Rb[i-len-1]=s[i];
        }
        Rb[i-len-1]='\0';
        for(i=len;i<strlen(r)-1;i++)
        {
            Lb[i-len]=r[i];
        }
        Lb[i-len]='\0';
        In_Pos_order(&(*t)->lchild,Ra,La);
        In_Pos_order(&(*t)->rchild,Rb,Lb);
    }
    else
    {
        *t=NULL;
    }
}
 
int main()
{
    Bintree t;
    char in[30]="ABCEFGHD",pos[30]="ABFHGEDC";//测试数据
    printf("输入中序遍历序列:");
    scanf("%s",in);
    printf("输入后序遍历序列:");
    scanf("%s",in);
    In_Pos_order(&t,in,pos);
    Preorder2(t);
}


相关评论