首页 > 其他分享 >AUSTOj7

AUSTOj7

时间:2022-10-27 20:48:04浏览次数:73  
标签:lchild case int BiTree printf rchild AUSTOj7

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>


using namespace std;

typedef char ElemType; //定义二叉树结点值的类型为字符型
//全局变量
int LEAFCOUNT=0;
int NODECOUNT=0;

typedef struct BiTNode //定义树
{
char data ;   //字符 数据
struct BiTNode *lchild,*rchild ; //定义左右孩子 struct为构造体

}BiTNode, *BiTree;

void CreateBiTree(BiTree &T)//按先序次序输入,以"#"表示空树
{
char ch ;  输入数据
scanf("%c",&ch) ;   //输入数据,当ch为#时判断为空
if(ch =='#')
T = NULL ;
else{      //为T赋值,将BITNode属性赋予T
T=new BiTNode;
T->data = ch ;    //将数据域指向ch
CreateBiTree(T->lchild);   //构建左孩子
CreateBiTree(T->rchild);//构建右孩子
}
}

void PreOrderTraverse(BiTree T)//先序遍历
{
if(T)
{
printf("%c ",T->data) ;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}

void InOrderTraverse(BiTree T)
{
if(T)
{
InOrderTraverse(T->lchild);
printf("%c ",T->data) ;
InOrderTraverse(T->rchild);
}
}

void PostOrderTraverse(BiTree T)//后序遍历
{
if(T)
{
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c ",T->data) ;
}
}

int BTDepth(BiTree T)//求二叉树的深度
{
if(T==NULL)
return 0;
else
{
int m=BTDepth(T->lchild);
int n=BTDepth(T->rchild);
if(m>n) return (m+1);
else return (n+1);
}
}

int Leaf(BiTree T)//求二叉树的叶子数, 使用全局变量
{
if(T!=NULL)
{
LEAFCOUNT=Leaf(T->lchild);
if((T->lchild==NULL)&&(T->rchild==NULL))
LEAFCOUNT=LEAFCOUNT+1;
LEAFCOUNT=Leaf(T->rchild);
}
return LEAFCOUNT;
}
void NodeCount(BiTree T)//求二叉树的结点总数, 使用全局变量
{

if (T!= NULL)
{
NODECOUNT = NODECOUNT + 1;
NodeCount(T->lchild);
NodeCount(T->rchild);
}

}

int main()
{
BiTree T=NULL;
int select;
while(scanf("%d",&select)!=EOF)
{

switch(select)
{
case 0:
return 0;
case 1:
getchar();
CreateBiTree(T);
break;
case 2:
if(T) {
PreOrderTraverse(T);
printf("\n");
}
break;
case 3:
if(T) {
InOrderTraverse(T);
printf("\n");
}
break;
case 4:
if(T) {
PostOrderTraverse(T);
printf("\n");
}
break;
case 5:
printf("%d\n",BTDepth(T));
break;
case 6:
LEAFCOUNT=0;
Leaf(T);
printf("%d\n",LEAFCOUNT);
break;
case 7:
NODECOUNT=0;
NodeCount(T);
printf("%d\n",NODECOUNT);
break;
}
}
return 0;
}

标签:lchild,case,int,BiTree,printf,rchild,AUSTOj7
From: https://www.cnblogs.com/liujy2233/p/16833647.html

相关文章