| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2899 人关注过本帖
标题:这个程序有什么问题吗!!各位大神救济一下啊~~
只看楼主 加入收藏
哎呦喂撒浪嘿
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-4-27
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
这个程序有什么问题吗!!各位大神救济一下啊~~
#include "LinkBiTree.h"这个为什么总显示错误?急!
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef char DataType;
#define MAXSIZE 100
#include "LinkBiTree.h"

typedef struct Node
{
    DataType data;
    struct Node*lchild;
    struct Node*rchild;
}*BiTree,BiNode;

void CreateBiTree(BiTree *T,char str[])
{
    DataType ch;
    scanf("%c",&ch);
    if(ch=='#')
        *T=NULL;
    else
    {
        *T=(BiTree)malloc(sizeof(BitNode));
        if(!(*T))
            exit(-1);
        (*T)->data=ch;
        CreateBiTree(&((*T)->lchild));
        CreateBiTree(&((*T)->rchild));


    }
}
void LeavePrint(BiTree T)
{
    BiTree queue[MAXSIZE];
    BitNode *p;
    int front,rear;
    front=rear=-1;
    rear++;
    queue[rear]=T;
    while(front!=rear)
    {
        front=(front+1)%MAXSIZE;
        p=queue[front];
        printf("%c"p->data);
        if(p->lchild!=NULL)
        {
            rear=(rear+1)%MAXSIZE;
            queue[rear]=p->lchild;
        }
        if(p->rchild!=NULL)
        {
            rear=(rear+1)%MAXSIZE;
            queue[rear]=p->rchild;

        }
    }

}
void TreePrintf(BiTree T,int level)
{
    int i;
    if(T==NULL)
        return;
    TreePrintf(T->rchild,level+1);
    for(i=0;i<level;i++)
        printf(" ");
    printf("%c\n",T->data);
    TreePrintf(T->lchild,level+1);

}

int LeafNum(BiTree T)
{
    if(!T)
        return 0;
    else if(!T->lchild&&!T->rchild)
        return 1;
    else
        return LeafNum(T->lchild)+LeafNum(T->rchild);

}
int NotLeafCount(BiTree T)
{
    if(!T)
        return 0;
    else if(!T->lchild&&!T->rchild)
        return 0;
    else
        return NotLeafCount(T->lchild)+NotLeafCount(T->rchild)+1

    }
int BitTreeDepth(BiTree T)
{
    if(T==NULL)
        return 0;
    return BiTreeDepth(T->lchild)>BiTreeDepth(T->rchild);
    1+BiTreeDepth(T->lchild):1+BiTreeDepth(T->rchild);

}
int main()
{
    BiTree T,root;
    int num,depth;
    printf("根据括号嵌套(a(b(c,d),e(f(,g),h(i))))建立二叉树:\n");
    CreateBiTree(&root,"(a(b(c,d),e(f(,g),h(i))))");
    num=LeafNum(root);
    printf("叶子节点个数:%2d\n",num);
    num=NotLeafCount(root);
    printf("非叶子节点个数:%2d\n",num);
    depth=BitTreeDepth(root);
    printf("二叉树的深度:%2d\n",depth);
    DestroyBitTree(&T);
    DestroyBitTree(&root);
}
2016-04-27 22:18
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:20 
能写二叉树的,应该不至于解决不了语法错误和用法错误。

然后把 BitTreeDepth 函数重写一下,CreateBiTree看上几遍理解理解,这个问题也就解决了。


[fly]存在即是合理[/fly]
2016-04-29 16:13
快速回复:这个程序有什么问题吗!!各位大神救济一下啊~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016313 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved