二叉树的应用
#include<stdio.h>
//5-1二叉链表的存储结构定义
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//5-2先序遍历顺序建立二叉链表
void CreateBiTree(BiTree &T){
char ch;
scanf("%c",&ch);
if (ch=='#')
{
T=NULL;
}else
{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
//5-3二叉树的高度
int Depth(BiTree T){
int m,n;
if (T==NULL)
{
return 0;
}else{
m=Depth(T->lchild);
n=Depth(T->rchild);
if(m>n)
return (m+1);
else
return (n+1);
}
}
//5-4二叉树的结点总数
int NodeCount(BiTree T){
if (T==NULL)
{
return 0;
}else
{
return NodeCount(T->lchild)+NodeCount(T->rchild)+1;
}
}
//主函数
int main()
{
BiTree T;
printf("先序序列输入二叉树的各结点(空树以#代替):AB##CD##E##:");
CreateBiTree(T);
printf("输出二叉树的高度:%d\n",Depth(T));
printf("输出二叉树的结点数:%d\n",NodeCount(T));
}