|
1鱼币
提交时显示运行有误,本人对递归有点无奈,麻烦大神指点是哪里有误,怎样改正,谢谢了!代码如下:
#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;
}
判断是否为完全二叉树
原理是判断第n-1层是否为满二叉树
用层序遍历会简单很多 并且不用递归操作
还有 递归这个东西 能不用就不用 控制不好出口和循环次数很容易爆栈
|
最佳答案
查看完整内容
判断是否为完全二叉树
原理是判断第n-1层是否为满二叉树
用层序遍历会简单很多 并且不用递归操作
还有 递归这个东西 能不用就不用 控制不好出口和循环次数很容易爆栈
|