判断完全二叉树

来源:互联网 发布:mac软件无法强制退出 编辑:程序博客网 时间:2024/04/29 22:25

判断完全二叉树

 

#include<stdio.h>#include<malloc.h>#define OVERFLOW 0;#define ERROR O;#define OK 1;typedef char TElemType;typedef int Status;typedef struct BiTNode{TElemType data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;Status CreateBiTree(BiTree &T){char ch;fflush(stdin); scanf("%c",&ch); fflush(stdin); if(ch==' ')T=NULL;else{if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))return OVERFLOW;T->data=ch;printf("请输入 %c 的左节点:\n",T->data);CreateBiTree(T->lchild);printf("请输入 %c 的右节点:\n",T->data);CreateBiTree(T->rchild);}}int fullBiTree(BiTree T) {BiTree queue[100],p;int first=0,rear=0,bj=1,cm=1; if(T!=NULL) {  rear++;   queue[rear]=T;   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(){BiTree T;printf("请输入树根:\n"); CreateBiTree(T);int cm=fullBiTree(T); if(cm)printf("此二叉树为完全二叉树\n"); else printf("此二叉树不是完全二叉树\n"); return 0;}


 

原创粉丝点击