首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

二叉树大侠帮小弟我看看!

2012-03-09 
二叉树大侠帮我看看!!!C/C++ code/*----------------------------------------------------已知二叉树的先

二叉树大侠帮我看看!!!

C/C++ code
/*----------------------------------------------------已知二叉树的先序序列为{A,B,C,D,E,F,G},中序序列为{B,D,C,A,F,E,G}.求该二叉树的后续序列。-----------------------------------------------------*/#include<stdio.h>#include<string.h>#include<malloc.h>typedef struct NODE{    char data;    struct NODE *lchild;    struct NODE *rchild;    }*BitTree,BitNode;BitTree T; /*---------------函数声明----------------*/void CreateBitTree(BitTree *T,char *pre,char *in,int len);void PostTraverse(BitTree T);void DestoryBitTree(BitTree *T);/*--------------主函数---------------------*/int main(){            char PreOrderList[]="ABCDEFG",InOrderList[]="BDCAFEG";        int len=strlen(PreOrderList);    CreateBitTree(&T,PreOrderList,InOrderList,len);        printf("二叉树后续序列为:");    PostTraverse(T);    DestoryBitTree(&T);        return 0;    }/*---------------操作函数的定义--------------*/void DestoryBitTree(BitTree *T)          /*销毁二叉树*/{    if(*T!=NULL)    {        if((*T)->lchild)            DestoryBitTree(&(*T)->lchild);        if((*T)->rchild)            DestoryBitTree(&(*T)->rchild);        free(*T);                                   *T=NULL;    }    }void CreateBitTree(BitTree *T,char *pre,char *in,int len)  //根据先序和中序序列建立二叉树{            int k;    char *temp;    if(len<0)    {        *T=NULL;    }        if(T)    {        *T=(BitTree)malloc(sizeof(BitNode));        (*T)->data=*pre;        for(temp=in;temp<in+len;temp++)        {            if(*temp==*pre)                break;        }                k=temp-in;        CreateBitTree(&(*T)->lchild,pre+1,in,k);        CreateBitTree(&(*T)->rchild,pre+k+1,temp+1,len-k-1);    }}void PostTraverse(BitTree T)        /*后续遍历二叉树*/{       if(T)    {                PostTraverse(T->lchild);        PostTraverse(T->rchild);        printf("%c",T->data);    }}


程序没有输出,百思不得其解!!
经过调试发现程序执行完CreateBitTree()后结束了。太怪了!
请大侠帮忙看看!!


[解决办法]
if(len <= 0){*T=0; return;}

热点排行