关于树的创建的函数问题
#include <stdio.h>#include <stdlib.h>#define Max 500typedef struct BiTNode//树结点结构{ char date; //数据 struct BiTNode *plchild,*prchild;//左右孩子指针}BiTNode, *BiTree;void CreateBiTree(BiTree T){ char c; scanf("%c",&c);//输入节点数据 if(c == '#')//如果输入‘#’表示结点为空 T=NULL; else{ if(!(T = (BiTree)malloc(sizeof(BiTNode))))//申请结点空间 exit(-1); T->date = c; //printf("%c",T->date); CreateBiTree(T->plchild);//由建立左子树 CreateBiTree(T->prchild);//建立右子树 }}void Display(BiTree root)//层序输出树{ BiTree queue[Max],p; int front=0,rear=0; queue[rear++]=root; if(NULL==root)return ; while(rear!=front) { p=queue[front++]; printf("%c",p->date); if(p->plchild)queue[rear++]=p->plchild; if(p->prchild)queue[rear++]=p->prchild; }}int main(){ BiTree p;//建立树节点 CreateBiTree(p); Display(p);}
#include <stdio.h>#include <stdlib.h>#define Max 500typedef struct BiTNode//树结点结构{ char date; //数据 struct BiTNode *plchild,*prchild;//左右孩子指针}BiTNode, *BiTree;void CreateBiTree(BiTree* T){ char c; scanf("%c",&c);//输入节点数据 getchar(); if(c == '#')//如果输入‘#’表示结点为空 *T=NULL; else{ if(!(*T = (BiTree)malloc(sizeof(BiTNode))))//申请结点空间 exit(-1); (*T)->date = c; //printf("%c",T->date); CreateBiTree(&((*T)->plchild));//由建立左子树 CreateBiTree(&((*T)->prchild));//建立右子树 }}void Display(BiTree root)//层序输出树{ BiTree queue[Max],p; int front=0,rear=0; queue[rear++]=root; if(NULL==root)return ; while(rear!=front) { p=queue[front++]; printf("%c",p->date); if(p->plchild)queue[rear++]=p->plchild; if(p->prchild)queue[rear++]=p->prchild; }}int main(){ BiTree p;//建立树节点 CreateBiTree(&p); Display(p);}