| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 574 人关注过本帖
标题:求大神教如何输入树
只看楼主 加入收藏
桉梣
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-5-24
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:1 
求大神教如何输入树
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef char DataType;
typedef struct BitNode
{DataType data;
struct BitNode *lchild,*rchild;
}BitNode,*BitTree;
void BinTreeInit(BitTree *BT)    /*初始化二叉树树根指针置空*/
{
    BT=NULL;
}
void BinTreeCreat(BitTree BT)/*按先序建立一个二叉树*/
{   
    char ch;
    scanf(&ch);
    if(ch==' ')   BT=NULL;
    else{
        BT=((BitNode *)malloc(sizeof(BitNode)));
        BT->data=ch;
        BinTreeCreat(BT->lchild);
        BinTreeCreat(BT->rchild);
    }
}
int BinTreeEmpty(BitTree BT)/*检查二叉树是否为空*/
{
    if(BT==NULL)
    printf("是空二叉树");
    else
    printf("不是二叉树");
}
void BinTraverse(BitTree BT) /先序遍历二叉树*/
{
    if(BT!=NULL)
    {
        printf("%d",BT->data);
        BinTraverse(BT->lchild);
        BinTraverse(BT->rchild);
    }

}

int BinTreeDepth(BitTree BT) /*求二叉树的深度*/
{
    int i;
    if(BT)
    {
        int dethl=BinTreeDepth(BT->lchild);
        int dethr=BinTreeDepth(BT->rchild);
        i=1+(dethl>dethr?dethl:dethr);
    }
    else i=0;
    return i;
}
int BinTreeCount(BitTree BT)/*求二叉树中所有结点数*/
{
    int node;
    if(BT)
    {
        int m=BinTreeCount(BT->lchild);
        int n=BinTreeCount(BT->rchild);
        node=m+n+1;
    }
    else
        node=0;
    return node;
}
void BinTreeClear(BitTree BT)/*清除二叉树变为空树*/
{
    if(BT!=NULL)
    {
      BT->lchild=NULL;
      BT->rchild=NULL;
      BT=NULL;
    }
}

int main()
{   
    BitTree *BT;
    void BinTreeCreat(BitTree BT);
    void BinTreeInit(BitTree *BT);
    int BinTreeEmpty(BitTree BT);
    void BinTraverse1(BitTree BT);
    int BinTreeDepth(BitTree BT);
    int BinTreeCount(BitTree BT);
    void BinTreeClear(BitTree BT);
    return 0;
}
搜索更多相关主题的帖子: include 二叉树 如何 
2015-05-24 21:06
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:20 
//代码排版还好,问题大致看了下,稍作修改如下。。。当然没有验证完可能还有问题
//望楼主好好改一下。。。
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct BitNode{  
   DataType data;
   struct BitNode *lchild;
   struct BitNode *rchild;
}BitNode;
void BinTreeInit(BitNode *BT){    /**初始化二叉树树根指针置空*/
   BT=NULL;
}
BitNode *BinTreeCreat(BitNode *BT,DataType data){ /**按先序建立一个二叉树*/
     BitNode *p,*s;
     int flag=0;  //用来记录是否插入新结点
      s=(BitNode *)malloc(sizeof(BitNode)); //新生新结点
      s->data=data;
      s->lchild=NULL;
      s->rchild=NULL;
     if(BT==NULL)  //如果为空,新的结点为根结点
        BT=s;
        else{
            p=BT;
            while(!flag)
            if(p->data>data){if(p->lchild==NULL){p->lchild=s;flag=1;}else p=p->lchild;}
            else{if(p->rchild==NULL){p->rchild=s;flag=1;}else p=p->rchild;}
        }
    return BT;
}
int BinTreeEmpty(BitNode *BT){/**检查二叉树是否为空*/
    if(BT==NULL)
    printf("是空二叉树");
    else
    printf("不是二叉树");
}
void BinTraverse(BitNode *BT){ /**先序遍历二叉树*/
    if(BT!=NULL){
        printf("%d",BT->data);
        BinTraverse(BT->lchild);
        BinTraverse(BT->rchild);
    }
}
int BinTreeDepth(BitNode *BT){ /**求二叉树的深度*/
    int i;
    if(BT){
        int dethl=BinTreeDepth(BT->lchild);
        int dethr=BinTreeDepth(BT->rchild);
        i=1+(dethl>dethr?dethl:dethr);
    }
    else i=0;
    return i;
}
int BinTreeCount(BitNode *BT){ /**求二叉树中所有结点数*/
    int node;
    if(BT){
        int m=BinTreeCount(BT->lchild);
        int n=BinTreeCount(BT->rchild);
        node=m+n+1;
    }
    else
        node=0;
    return node;
}
void BinTreeClear(BitNode *BT){ /**清除二叉树变为空树*/
    if(BT!=NULL){
      BT->lchild=NULL;
      BT->rchild=NULL;
      BT=NULL;
    }
}

int main(){   
    DataType a[]={4,2,1,3,6,5,7};
    BitNode *BT;
    BT=(BitNode *)malloc(sizeof(BitNode));
    BT=NULL;
//  BinTreeInit(BT);                                  //初始化函数问题就不说了
    for(int i=0;i<7;i++)
    BT=BinTreeCreat(BT,a[i]);                         //分解插入递推式。。。
    BinTraverse(BT);
    printf("\ncount=%d",BinTreeCount(BT));
   return 0;
}

剑栈风樯各苦辛,别时冰雪到时春
2015-05-25 10:35
快速回复:求大神教如何输入树
数据加载中...
 
   



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

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