结果 发表于 2016-6-11 17:19:55

判断是否为完全二叉树,递归判断

提交时显示运行有误,本人对递归有点无奈,麻烦大神指点是哪里有误,怎样改正,谢谢了!代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
    char data;
    node *lchild, *rchild;
}BiTreNode;
void CreaTree(BiTreNode *&T)
{
    char a;
    scanf("%c",&a);
    if ('#' == a)
      T = NULL;
    else
    {
      T = (BiTreNode *)malloc(sizeof(BiTreNode));
      T->data = a;
      CreaTree(T->lchild);
      CreaTree(T->rchild);
    }
}
int PanDuan(BiTreNode *T,int n)
{
    if(T=NULL)return 0;
    if ((T->lchild == NULL&&T->rchild != NULL)||(T->lchild!=NULL&&T->rchild==NULL))
      n=n+1;
    PanDuan(T->lchild,n);
    PanDuan(T->rchild,n);
    return n;
}
int main()
{
    BiTreNode *T;
    CreaTree(T);
    if(PanDuan(T,0)==0)
      printf("Y");
    else
      printf("N");
    return 0;
}

ryxcaixia 发表于 2016-6-11 17:19:56

判断是否为完全二叉树
原理是判断第n-1层是否为满二叉树

用层序遍历会简单很多 并且不用递归操作
还有 递归这个东西 能不用就不用 控制不好出口和循环次数很容易爆栈

~风介~ 发表于 2016-6-12 20:40:02

楼主是这学期正在学习《数据结构与算法》这门课吗?
页: [1]
查看完整版本: 判断是否为完全二叉树,递归判断