| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6082 人关注过本帖
标题:判断二叉树是否是完全二叉树的问题?问题解决
取消只看楼主 加入收藏
明天不一样
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-8-31
收藏
 问题点数:0 回复次数:2 
判断二叉树是否是完全二叉树的问题?问题解决
一二叉树用二叉链表形式存放,请写一算法,判断此二叉树是否是完全二叉树?想了好久没有想出,不知哪位高手能够会。

[此贴子已经被作者于2006-9-24 3:39:38编辑过]

搜索更多相关主题的帖子: 二叉树 问题解决 判断 链表 算法 
2006-09-23 02:43
明天不一样
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-8-31
收藏
得分:0 

你好!感谢你的精彩回答,可是你的程序是不是用delphi编写的呢?我没有学过delphi,有点看不懂,能不能用C语言实现呢?急……


可怜可怜我吧!小弟知识贫乏,快要饿死了,大哥大姐你们行行好,给点编程知识吧!我会永远记住你们的恩情。
2006-09-23 11:22
明天不一样
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-8-31
收藏
得分:0 

我编写了下面的代码,不知对不对,高手指教……

算法思想:按层次遍历,先找出结点中左右孩子都没有的第一个结点,然后判断其后的结点是不是都没有左右孩子,如果是则返回0,是完全二叉树,否则不是完全二叉树。

typedef struct node {
char data;
struct node *leftchile,*rightchile;
}Bitree;

int wanqutree(Bitree *bt)
{
Bitree *p;
Bitree *Q[MAXSIZE]; //定义队列,用于存取树结点的地址
int front,rear;
if(bt==NULL)return;
front=0;
rear=0;
Q[rear++]=bt; //初始化队列
p=bt;
while((front!=rear)&&(p->leftchile!=NULL)&&(p->rightchile!=NULL))
{ //此循环找到其左右孩子均为空的第一个结点
Q[rear++]=p->leftchile;
Q[rear++]=p->rightchile;
p=Q[front];
}
while(front!=rear) //此循环判断上循环找到的结点以后的
{ 结点其左右孩子是不是都为空,如果是
p=Q[front++]; 则返回0,此树是完全二叉树
if((p->leftchile!=NULL)||(p->rightchile!=NULL))
return 0;
}
return 1; //不是完全二叉树则返回1
}

[此贴子已经被作者于2006-9-24 3:34:51编辑过]


可怜可怜我吧!小弟知识贫乏,快要饿死了,大哥大姐你们行行好,给点编程知识吧!我会永远记住你们的恩情。
2006-09-24 03:29
快速回复:判断二叉树是否是完全二叉树的问题?问题解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013852 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved