shu.h文件 typedef struct node { char data; struct node *lchild,*rchild; }bitnode,*bitree; //链式二叉树结点 bitree create(bitree t);//构建二叉树函数 void xianxu (bitree t);//先序便利二叉树函数 void zhongxu(bitree t);//中序遍历二叉树函数 void houxu(bitree t);//后序遍历二叉树函数 int Depth(bitree t);//求二叉树的深度函数 shu.c文件 #include <stdio.h> #include <string.h> #include"shu.h" //构建二叉树函数 bitree create(bitree t) { char ch; ch=getchar(); if(ch=='#') t=NULL; else { t=(bitree)malloc(sizeof(bitnode)); t->data=ch; t->lchild=create(t->lchild); t->rchild=create(t->rchild); } return t; } //先序便利二叉树函数 void xianxu (bitree t) { if(t) { printf("%c ",t->data); xianxu(t->lchild); xianxu(t->rchild); } } //中序遍历二叉树函数 void zhongxu(bitree t) { if(t) { zhongxu(t->lchild); printf("%c ",t->data); zhongxu(t->rchild); } } //后序遍历二叉树函数 void houxu(bitree t) { if(t) { houxu(t->lchild); houxu(t->rchild); printf("%c ",t->data); } } //求二叉树的深度函数 int Depth(bitree t) { int dep=0,depl,depr; if(!t) dep=0; else { depl=Depth(t->lchild); depr=Depth(t->rchild); dep=1+(depl>depr?depl:depr); } return dep; } main.c文件 #include<stdio.h> #include<malloc.h> #include"shu.c" //主函数 int main(void) { int d; bitree t; printf("请输入你想建立的二叉树(按照先序构造)并以#表示空:/n"); t=create(t); printf("按照先序打印出的二叉树为:/n"); xianxu(t); printf("/n"); printf("按照中序打印出的二叉树为:/n"); zhongxu(t); printf("/n"); printf("按照后续打印出来的二叉树为:/n"); houxu(t); printf("/n"); printf("书的深度为:/n"); d=Depth(t); printf("%d/n",d); return 0; } 实验结果截图: