编写程序判别给定二叉树是否为完全二叉树。

论坛 期权论坛 期权     
粽子阿华792   2018-4-28 02:12   3683   2
分享到 :
0 人收藏

2 个回复

倒序浏览
2#
乌石  2级吧友 | 2018-4-30 01:12:59
int JudgeComplete(BiTree bt)  //判断二叉树是否是完全二叉树,如是,返回1,否则,返回0
{int tag=0; BiTree p=bt, Q[]; // Q是队列,元素是二叉树结点指针,容量足够大
if(p==null) return (1);
QueueInit(Q); QueueIn(Q,p);  //初始化队列,根结点指针入队
while (!QueueEmpty(Q))
{p=QueueOut(Q);                                //出队
if (p->lchild && !tag) QueueIn(Q,p->lchild);  //左子女入队
else {if (p->lchild) return 0;                //前边已有结点为空,本结点不空
       else tag=1;                             //首次出现结点为空
if (p->rchild && !tag) QueueIn(Q,p->rchild);  //右子女入队
else if (p->rchild) return 0; else tag=1;
} //while
return 1;  } //JudgeComplete
3#
乌石  2级吧友 | 2018-4-30 01:13:00
int JudgeComplete(BiTree bt)  //判断二叉树是否是完全二叉树,如是,返回1,否则,返回0
{int tag=0; BiTree p=bt, Q[]; // Q是队列,元素是二叉树结点指针,容量足够大
if(p==null) return (1);
QueueInit(Q); QueueIn(Q,p);  //初始化队列,根结点指针入队
while (!QueueEmpty(Q))
{p=QueueOut(Q);                                //出队
if (p->lchild && !tag) QueueIn(Q,p->lchild);  //左子女入队
else {if (p->lchild) return 0;                //前边已有结点为空,本结点不空
       else tag=1;                             //首次出现结点为空
if (p->rchild && !tag) QueueIn(Q,p->rchild);  //右子女入队
else if (p->rchild) return 0; else tag=1;
} //while
return 1;  } //JudgeComplete
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP