#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MaxSize 50
typedef struct BiTreeNode{
int data;
struct BiTreeNode *lchild,*rchild;
}BiTreeNode,*BiTree;
typedef struct{
BiTree data;
int front,rear;
}queue;
//判断一棵树是否为完全二叉树
//算法思想:用层次遍历
//先将第一个元素入队
//当队列不为空的时候,将队首元素出队,如果p指向的元素不为空,则把它们的左右孩子入队
//不然的话(要是p指向的元素为空),当队列不为空的时候,将队列里面的元素继续出队
//若出队的元素,如果全是null的话,则满足完全二叉树,但凡有一个元素不为null,则不是完全二叉树
bool iscompleteBiTree(BiTree T){
BiTree queue[MaxSize],p = T;
int front = -1,rear = -1;
queue[++rear] = p;
while(front!=rear){ //当队列不为空
p = queue[++front]; //出队
if(p){ //如果p不为空
queue[++rear] = p->lchild; //将其左孩子入队
queue[++
判断一棵树是否为完全二叉树
最新推荐文章于 2024-07-12 10:45:15 发布