typedef char status; typedef char Telemtype; #define NULL 0 #define OK 1 typedef struct bitnode{ Telemtype data; struct bitnode *lchild,*rchild; }bitnode,*bitree; Creatbitree(bitree &t) { //先序创建二叉树 char ch; scanf("%c",&ch); if(ch=='*') t=NULL; else{ t=(bitnode *)malloc(sizeof(bitnode)); if(!t) exit(0); t->data=ch; Creatbitree(t->lchild); Creatbitree(t->rchild); } return OK; } status Leafcount(bitree t) { //统计二叉树中叶子结点的个数 if(!t) return 0; else if(t->lchild==0&&t->rchild==0) return 1; else return Leafcount(t->lchild)+Leafcount(t->rchild); } status Depth(bitree t) { //计算该二叉树的深度 int dl,dr,d; if(!t) return 0; else { ///////////#TODO7 dl=Depth(t->lchild); dr=Depth(t->rchild); if(dl>=dr) return d=1+dl; if(dl<dr) return d=1+dr; } } status Nodecount(bitree t) { //统计二叉树的总的结点数 int n,nl,nr; if(!t) return 0; else { ///////////#TODO8 nl=Nodecount(t->lchild); nr=Nodecount(t->rchild); n=1+nl+nr; } return n; } void Preordertree(bitree t) { //先序序列遍历二叉树 if(t) { printf("%c",t->data); Preordertree(t->lchild); Preordertree(t->rchild); } } void Inordertree(bitree t) { //中序序列遍历二叉树 if(t) { Inordertree(t->lchild); printf("%c",t->data); Inordertree(t->rchild); } } void Pasttree(bitree t) { //后序序列遍历二叉树 if(t){ Pasttree(t->lchild); Pasttree(t->rchild); printf("%c",t->data); } }
编译运行结果如下:
<img src="http://img.blog.csdn.net/20140530230219765" alt="" />
原文地址:http://blog.csdn.net/u014483914/article/details/27674751