满意答案
MiC资讯
2013.04.27
采纳率:45% 等级:12
已帮助:15954人
lz
完成了
#include "stdio.h"
#include "stdlib.h"
#define Max 100
typedef struct Node
{
char data;
struct Node * LChild,*RChild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree * bt)
{
char ch;
ch=getchar();
if(ch==10)ch=getchar();//如果为 回车换行 读取下一个字符
if(ch=='.') *bt=NULL; //如果为 . 代表此节点为空
else
{
* bt=(BiTree)malloc(sizeof(BiTNode));
(* bt)->data=ch; //赋值
CreateBiTree(&((* bt)->LChild));
CreateBiTree(&((* bt)->RChild));
}
}
bool fullBiTree(BiTree b)
{
if(b->LChild==NULL && b->RChild==NULL)return true;//如果左右子树为空,返回真
if(b->LChild==NULL || b->RChild==NULL)return false;//如果左右子树只有一个为空,返回假
return fullBiTree(b->LChild) && fullBiTree(b->RChild);//通过递归,返回 交
}
void main()
{
printf("此二叉树是对字符进行存储\n\n");
printf("请依次输入字符(范例\n不是完全二叉树ABCO..UMJKL.EDC..........\n完全二叉树ABC..DE..F..G..)\n");
BiTree b;
CreateBiTree(&b); //创建二叉树
bool cm=fullBiTree(b);
if(cm)printf("此二叉树为完全二叉树\n");
else printf("此二叉树不是完全二叉树\n");
}
14分享举报