#include <stdio.h>
#include <stdlib.h>
#define MAX 20
#define NULL 0
typedef char TElemType;
typedef int Status;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBiTree(BiTree T){
char ch;
ch=getchar();
if (ch=='#') (T)=NULL; / #代表空指针/
else {(*T)=(BiTree) malloc(sizeof(BiTNode));/*申请结点 */
(*T)->data=ch; /*生成根结点 */
CreateBiTree(&(*T)->lchild) ; /*构造左子树 */
CreateBiTree(&(*T)->rchild) ; /*构造右子树 */
}
return 1;
}
void PreOrder(BiTree T){
if (T) { printf("%2c",T->data); /访问根结点,此处简化为输出根结点的数据值/
PreOrder(T->lchild); /先序遍历左子树/
PreOrder(T->rchild); /先序遍历右子树/
}
}
void LevleOrder(BiTree T){
/层次遍历二叉树T,从第一层开始,每层从左到右/
BiTree Queue[MAX],b; /用一维数组表示队列,front和rear分别表示队首和队尾指针/
int front,rear;
front=rear=0;
if (T) /若树非空/
{Queue[rear++]=T; /根结点入队列/
while (front!=rear){ /当队列非空/
b=Queue[front++]; /队首元素出队列,并访问这个结点/
printf("%2c",b->data);
if (b->lchild!=NULL) Queue[rear++]=b->lchild; /左子树非空,则入队列/
if (b->rchild!=NULL) Queue[rear++]=b->rchild; /右子树非空,则入队列/
}
}
}//LevelOrder
int depth(BiTree T){ /求二叉树的深度/
int dep1,dep2;
if (T==NULL) return 0;
else {dep1=depth(T->lchild);
dep2=depth(T->rchild);
return dep1>dep2?dep1+1:dep2+1;
}
}//depth
main()
{
BiTree T=NULL;
printf("\nCreate a Binary Tree\n");
CreateBiTree(&T); /建立一棵二叉树T/
printf("\nThe preorder is:\n");
PreOrder(T); /先序遍历二叉树/
printf("\nThe level order is:\n");
LevleOrder(T); /层次遍历二叉树/
printf("\nThe depth is:%d\n",depth(T));
}
请把程序代码格式化,重新发布,问题描述一下。
重新用代码块格式化一下吧。另外有什么错误现象也给出来吧