鱼C论坛

 找回密码
 立即注册
查看: 4372|回复: 2

[已解决]判断是否为完全二叉树,递归判断

[复制链接]
发表于 2016-6-11 17:19:55 | 显示全部楼层 |阅读模式
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;
}
最佳答案
2016-6-11 17:19:56
判断是否为完全二叉树
原理是判断第n-1层是否为满二叉树

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

最佳答案

查看完整内容

判断是否为完全二叉树 原理是判断第n-1层是否为满二叉树 用层序遍历会简单很多 并且不用递归操作 还有 递归这个东西 能不用就不用 控制不好出口和循环次数很容易爆栈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-11 17:19:56 | 显示全部楼层    本楼为最佳答案   
判断是否为完全二叉树
原理是判断第n-1层是否为满二叉树

用层序遍历会简单很多 并且不用递归操作
还有 递归这个东西 能不用就不用 控制不好出口和循环次数很容易爆栈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-12 20:40:02 | 显示全部楼层
楼主是这学期正在学习《数据结构与算法》这门课吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 19:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表