#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef int TElemType;
typedef struct BiTNode
{
TElemType data;
BiTNode *lchild, *rchild;
}BiTNode,*BiTree;
void InitBiTree(BiTree &T);
void CreateBiTree(BiTree &T);
bool BiTreeEmpty(BiTree T);
int BiTreeDepth(BiTree T);
void Visit(TElemType e);
void PreOrderTraverse(BiTree T, void(*Visit)(TElemType));
void InOrderTraverse(BiTree T, void(*Visit)(TElemType));
int main()
{
BiTree T;
int depth = 0;
InitBiTree(T);
CreateBiTree(T);
printf(“深度为%d\n”, BiTreeDepth(T));
PreOrderTraverse(T, Visit);
printf("\n");
InOrderTraverse(T, Visit);
return 0;
}
void InitBiTree(BiTree &T)
{
T = NULL;
}
void CreateBiTree(BiTree &T)
{
TElemType num;
scanf_s("%d", &num);
if (num == 0)
{
T = NULL;
}
else
{
T = (BiTree)malloc(sizeof(BiTNode));
if (!T)
exit(-1);
T->data = num;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
bool BiTreeEmpty(BiTree T)
{
if (T == NULL)
{
return false;
}
else
return true;
}
int BiTreeDepth(BiTree T)
{
int i, j;
if (T == NULL)
{
return 0;//空树深度为0
}
i = BiTreeDepth(T->lchild);
j = BiTreeDepth(T->rchild);
return i > j ? i + 1 : j + 1;
}
void Visit(TElemType e)
{
printf("%d->", e);
}
void PreOrderTraverse(BiTree T, void(*Visit)(TElemType))
{
if (T)
{
Visit(T->data);
PreOrderTraverse(T->lchild,Visit);
PreOrderTraverse(T->rchild,Visit);
}
}
void InOrderTraverse(BiTree T, void(*Visit)(TElemType))
{
if (T)
{
InOrderTraverse(T->lchild, Visit);
Visit(T->data);
InOrderTraverse(T->rchild, Visit);
}
}
这个程序,我有一个错误,debug了很久,,,结果忘了打空格。。。一个多小时啊。。。晕啦