C语言判断完全二叉树
判断一棵二叉树是否为完全二叉树,用C需要注释或者详细解释,谢谢各位了再次声明:用C而不是C++,而且要有解释或详细注释,好的一定加分...
判断一棵二叉树是否为完全二叉树,用C
需要注释或者详细解释,谢谢各位了
再次声明:用C而不是C++,而且要有解释或详细注释,好的一定加分 展开
需要注释或者详细解释,谢谢各位了
再次声明:用C而不是C++,而且要有解释或详细注释,好的一定加分 展开
5个回答
展开全部
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");
}
完成了
#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");
}
展开全部
#include "stdafx.h"
#include "iostream"
#define Max 100
using namespace std;
typedef struct Node
{ char data;
struct Node * LChild,*RChild;}BiTNode,*BiTree;
void CreateBiTree(BiTree * bt)
{
char ch;
ch=getchar();
if(ch=='.') *bt=NULL;
else
{
* bt=(BiTree)malloc(sizeof(BiTNode));
(* bt)->data=ch;
CreateBiTree(&((* bt)->LChild));
CreateBiTree(&((* bt)->RChild));
}
}
int fullBiTree(BiTree b)
{ //complete binary tree:完全二叉树
//full:满
BiTree queue[Max],p;
int first=0,rear=0,bj=1,cm=1;
if(b!=NULL)
{
rear++;
queue[rear]=b;
while(first!=rear)
{
first++;
p=queue[first];
if(p->LChild==NULL)
{
bj=0;
if(p->RChild!=NULL) cm=0;
}
else
{
cm=bj;
rear++;queue[rear]=p->LChild;
if(p->RChild==NULL) bj=0;
else
{
rear++;
queue[rear]=p->RChild;
}
}
}
return cm;
}
return 1;
}
int main(int argc, char* argv[])
{
cout<<"请依次输入字符ABCO..UMJKL.EDC....."<<endl;
BiTree b;
CreateBiTree(&b);
int cm=fullBiTree(b);
if(cm)cout<<"此二叉树为完全二叉树"<<endl;
else cout<<"此二叉树不是完全二叉树"<<endl;
return 0;
}
这个都差不多,主要是思想的问题,把main函数变成void类型就可以了。还有就是把cout改成printf就行了。输入变成scanf就行了啊
#include "iostream"
#define Max 100
using namespace std;
typedef struct Node
{ char data;
struct Node * LChild,*RChild;}BiTNode,*BiTree;
void CreateBiTree(BiTree * bt)
{
char ch;
ch=getchar();
if(ch=='.') *bt=NULL;
else
{
* bt=(BiTree)malloc(sizeof(BiTNode));
(* bt)->data=ch;
CreateBiTree(&((* bt)->LChild));
CreateBiTree(&((* bt)->RChild));
}
}
int fullBiTree(BiTree b)
{ //complete binary tree:完全二叉树
//full:满
BiTree queue[Max],p;
int first=0,rear=0,bj=1,cm=1;
if(b!=NULL)
{
rear++;
queue[rear]=b;
while(first!=rear)
{
first++;
p=queue[first];
if(p->LChild==NULL)
{
bj=0;
if(p->RChild!=NULL) cm=0;
}
else
{
cm=bj;
rear++;queue[rear]=p->LChild;
if(p->RChild==NULL) bj=0;
else
{
rear++;
queue[rear]=p->RChild;
}
}
}
return cm;
}
return 1;
}
int main(int argc, char* argv[])
{
cout<<"请依次输入字符ABCO..UMJKL.EDC....."<<endl;
BiTree b;
CreateBiTree(&b);
int cm=fullBiTree(b);
if(cm)cout<<"此二叉树为完全二叉树"<<endl;
else cout<<"此二叉树不是完全二叉树"<<endl;
return 0;
}
这个都差不多,主要是思想的问题,把main函数变成void类型就可以了。还有就是把cout改成printf就行了。输入变成scanf就行了啊
参考资料: http://zhidao.baidu.com/question/87335237.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二叉树存储结构
struct bt
{
char data; //结点值
struct bt *ltree;
struct bt *rtree;
}
int check (struct bt *root)
{
if (root == NULL)
return 0;
if (root->ltree == NULL && root->rtree == NULL)
return 1;
return check (root->ltree) & check (root->rtree);
}
struct bt
{
char data; //结点值
struct bt *ltree;
struct bt *rtree;
}
int check (struct bt *root)
{
if (root == NULL)
return 0;
if (root->ltree == NULL && root->rtree == NULL)
return 1;
return check (root->ltree) & check (root->rtree);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
30分太少了,给我200分给你写程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询