二叉树的子函数好像出了点问题

#include <stdio.h>

#include <malloc.h>

#include<stdlib.h>

#include<string.h>


#define MaxSize 50

typedef int ElemType; 

typedef struct node{

ElemType data;

struct node *lchild;

struct node *rchild;

}BTNode,*Bitree;

void InitBiTree(BTNode *&T);

{T=NULL;

}

void CreateBiTree(BTNode *&T,char *str)

{

BTNode *St[MaxSize],*p=NULL;

int top=-1,tag,j=0;

char ch;

T=NULL;

ch=str[j];

while(ch!="\0")

{

switch(ch)

{

case'(':top++;St[top]=p;tag=1;break;

case')':top--;break;

case',':tag=2;break;

default:p=(BTNode *)malloc(sizeof(BTNode));

p->data=ch;p->lchild=p->rchild=NULL;

if(T==NULL)

T=p;

else

{

switch(tag)

{

case 1:St[top]->lchild=p;break;

case 2:St[top]->rchild=p;break;

}

}

}

j++;

ch=str[j];

}

}

BTNode *FindNode(BTNode *T,ElemType x)

{

BTNode *p;

if(T==NULL)return NULL;

else if(T->data==x)return T;

else

{

p=FindNode(T->lchild,x);

if(p!=NULL)return p;

else return FindNode(T->rchild,x);

}

}

BTNode *LchildNode(BTNode *p)

{

if(p->lchild) return p->lchild;

else return NULL;

}

BTNode *RchildNode(BTNode *p)

{

if(p->rchild) return p->rchild;

else return NULL;

}

int BiTreeDepth(BTNode *T)

{

int ldep,rdep;

if(T==NULL)

return 0;

if(T->lchild)ldep=BiTreeDepth(T->lchild);

else

ldep=0;

if(T->rchild)rdep=BiTreeDepth(T->rchild);

else

rdep=0;

return(ldep>rdep)?(ldep+1):(rdep+1);

}

void visite(BTNode *T)

{

if(T==NULL)

printf("The node does not exist");

else

printf("%c",T->data);

}

void PrintBiTree1(BTNode *T)

{

if(T!=NULL)

{

visite(T);

if(T->lchild!=NULL||T->rchild!=NULL)

{

printf("(");

PrintBiTree1(T->lchild);

if(T->rchild!=NULL)printf(",");

PrintBiTree1(T->rchild);

printf(")");

}

}

}

void PrintBiTree2(BTNode *T,int level)

{

if(T!=NULL)

{

PrintBiTree2(T->rchild,level+1);

if(level!=0)

{

for(int i=0;i<4*(level-1);i++)

{printf("%s"," ");}

printf("%s","---");

}

visite(T);

printf("\n");

PrintBiTree2(T->lchild,level+1);

}

}

void DestoryBiTree(BTNode *&T)

{

if(T!=NULL)

{

DestoryBiTree(T->lchild);

DestoryBiTree(T->rchild);

free(T);

}

}

void main()

{

int a[]={1,2,3,4,5,6};

Bitree T;

InitBiTree(T);

}


noe12138
浏览 846回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP